加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 原始SQL方法中的字符串插值,怎么可能?

发布时间:2020-12-15 08:43:00 所属栏目:百科 来源:网络整理
导读:我刚刚检查了Entity Framework Core 2.0中的新期货.它有一个非常好的功能,称为“原始SQL方法中的字符串插值”,描述为 here. 它说这段代码: var city = "Redmond";using (var context = CreateContext()){ context.Customers.FromSql($@" SELECT * FROM Cust
我刚刚检查了Entity Framework Core 2.0中的新期货.它有一个非常好的功能,称为“原始SQL方法中的字符串插值”,描述为 here.

它说这段代码:

var city = "Redmond";

using (var context = CreateContext())
{
    context.Customers.FromSql($@"
        SELECT *
        FROM Customers
        WHERE City = {city}");
}

创建此查询:

SELECT *
FROM Customers
WHERE City = @p0

这对我来说真的很奇怪!如何编写FromSql方法,并输入类型字符串.

它是如何理解它是一个插值字符串,然后为它创建一个参数@p0查询?如何编写像FromSql这样的方法,知道它的字符串参数是如何创建的?

解决方法

它的工作方式是 FromSql( accepts a FormattableString.

当您使用返回FormatableString的$“…”时,该类允许您检查传入的字符串并查看其中的所有{}块及其所代表的对象.这允许框架用占位符参数@p0替换那些{}块,然后使用类似于新的SqlParameter(“@ p0”,formatableString.GetArgument(0))的东西创建一个新参数

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读