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

时间:2017-08-15 17:59:46

标签: c#

我刚刚检查了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这样的方法,知道如何创建字符串参数?

1 个答案:

答案 0 :(得分:8)

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

当您使用返回FormatableStringeditText.addTextChangedListener(new TextWatcher() { public void afterTextChanged(Editable s) {} public void beforeTextChanged(CharSequence s, int start, int count, int after) { } public void onTextChanged(CharSequence s, int start, //place neccessary logic here and close the keyboard } }); 时,该类允许您检查传入的字符串并查看其中的所有$"..."块及其所代表的对象。这允许框架使用占位符参数{ }替换这些{ }块,然后使用类似于@p0

的内容创建新参数