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这样的方法,知道它的字符串参数是如何创建的?

解决方法

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

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

相关文章

原文地址:http://msdn.microsoft.com/en-us/magazine/cc163...
前言 随着近些年微服务的流行,有越来越多的开发者和团队所采...
最近因为比较忙,好久没有写博客了,这篇主要给大家分享一下...
在多核CPU在今天和不久的将来,计算机将拥有更多的内核,Mic...
c语言输入成绩怎么判断等级
字符型数据在内存中的存储形式是什么