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

前端之家收集整理的这篇文章主要介绍了c# – 原始SQL方法中的字符串插值,怎么可能?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我刚刚检查了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这样的方法,知道它的字符串参数是如何创建的?

@H_502_15@解决方法
它的工作方式是 FromSql( accepts a FormattableString.

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

猜你在找的C#相关文章