Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/275.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 插值字符串上的Ef Core与Linq_C#_Sql Server_Linq To Sql_Ef Core 2.2 - Fatal编程技术网

C# 插值字符串上的Ef Core与Linq

C# 插值字符串上的Ef Core与Linq,c#,sql-server,linq-to-sql,ef-core-2.2,C#,Sql Server,Linq To Sql,Ef Core 2.2,使用插值字符串发送sql server查询,为什么在LINQ to sql上使用datacontext时需要添加单引号 db.ExecuteCommand($“删除表,其中日期=”{date:yyyy-MM-dd}') 使用EF Core时,您需要删除它们吗 db.Database.ExecuteSqlCommand($"delete table where date = {date:yyyy-MM-dd}"); 为什么在EF Core中,如果使用String.Format而不是插值,则需要

使用插值字符串发送sql server查询,为什么在LINQ to sql上使用datacontext时需要添加单引号

db.ExecuteCommand($“删除表,其中日期=”{date:yyyy-MM-dd}')

使用EF Core时,您需要删除它们吗

db.Database.ExecuteSqlCommand($"delete table where date = {date:yyyy-MM-dd}"); 
为什么在EF Core中,如果使用String.Format而不是插值,则需要放回单引号:

String.Format("delete table where date='{0}'", date.ToString("yyyy-MM-dd"));

主要区别在于:
$“hello{variable}”
不是字符串。这是一个好主意。实体框架将利用它来解析其中的参数

另一方面,
String.Format
将创建一个新的格式化字符串,其中不包含已格式化(或应格式化)的元信息。实体框架没有好的方法将其解析为数据库参数。它必须按原样将其发送到数据库

总之:如果你传递一个字符串,它必须有适当的格式,这样数据库才能理解文本。如果您向实体框架传递它能够理解并能够解析元数据的内容,它会将其转换为数据库参数,您不需要正确的格式,因为它不会以纯文本的形式发送,而是以带有数据库参数的文本的形式发送


为什么linqtosql不使用
FormattableString
的强大功能?可能是因为它在这个功能出现之前就被弃用了

好的,谢谢。阅读本文以获得更详细的解释很有帮助: