Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/323.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/8/linq/3.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# DbFunctions.TruncateTime()仍在生成;键入成员';日期';“不支持”;错误_C#_Linq_Entity Framework 6 - Fatal编程技术网

C# DbFunctions.TruncateTime()仍在生成;键入成员';日期';“不支持”;错误

C# DbFunctions.TruncateTime()仍在生成;键入成员';日期';“不支持”;错误,c#,linq,entity-framework-6,C#,Linq,Entity Framework 6,我在下面的LINQ查询中遇到了麻烦。我对这个错误做了很多研究,发现的几乎所有东西都引用了DbFunctions.TruncateTime(),但是这似乎对我仍然不起作用。我希望有人能看看这个,让我知道我哪里做错了。我所要做的只是比较datetime的日期部分,但我继续得到一个异常:指定的类型成员“date”在LINQ to实体中不受支持。仅支持初始值设定项、实体成员和实体导航属性。 if (!db.MaintenanceWindows.Any(x => x.Id == Id &

我在下面的LINQ查询中遇到了麻烦。我对这个错误做了很多研究,发现的几乎所有东西都引用了DbFunctions.TruncateTime(),但是这似乎对我仍然不起作用。我希望有人能看看这个,让我知道我哪里做错了。我所要做的只是比较datetime的日期部分,但我继续得到一个异常:指定的类型成员“date”在LINQ to实体中不受支持。仅支持初始值设定项、实体成员和实体导航属性。

if (!db.MaintenanceWindows.Any(x => x.Id == Id & 
DbFunctions.TruncateTime(x.BlockedDay) == DateTime.UtcNow.Date & 
x.IsDeleted.Value == false))
{
...
}

TIA

它并不是在抱怨
DbFunctions.TruncateTime
。它在抱怨
DateTime.UtcNow.Date

建议A: (不推荐)

建议B:

var utcNow = DateTime.UtcNow.Date;
if (!db.MaintenanceWindows.Any(x => x.Id == Id && 
    DbFunctions.TruncateTime(x.BlockedDay) == utcNow && 
    x.IsDeleted.Value == false))

此外,您还需要表达式中的“逻辑AND”(
&&&
)。

它并不是在抱怨
DbFunctions.TruncateTime
。它在抱怨
DateTime.UtcNow.Date

建议A: (不推荐)

建议B:

var utcNow = DateTime.UtcNow.Date;
if (!db.MaintenanceWindows.Any(x => x.Id == Id && 
    DbFunctions.TruncateTime(x.BlockedDay) == utcNow && 
    x.IsDeleted.Value == false))

此外,您还需要表达式中的“逻辑AND”(
&&
)。

这里的
Date
属性如何
DateTime.UtcNow.Date
,它使用的是
Date
属性-这正是异常消息告诉您的:)为什么不将其放入查询外部的变量中。因为它无法转换为sql查询,所以它不是受支持的规范函数。对于您希望支持的每个呼叫,必须编写代码以确保其能够被翻译。再次感谢您的快速响应。你们太棒了!嗯,考虑到
TruncateTime
DateTime.Date
属性的db等价物,我认为EF没有特别的理由不支持它。他们只是没有:)这里的
Date
property如何
DateTime.UtcNow.Date
我的意思是,它使用的是
Date
property-这正是异常消息告诉您的:)为什么不把它放在查询之外的变量中。因为它不能转换为sql查询,所以它不是受支持的规范函数。对于您希望支持的每个呼叫,必须编写代码以确保其能够被翻译。再次感谢您的快速响应。你们太棒了!嗯,考虑到
TruncateTime
DateTime.Date
属性的db等价物,我认为EF没有特别的理由不支持它。他们只是没有:)我不推荐建议A。这样,SQL server必须为每个记录截断声明变量的时间。拥有快速SQL查询的最佳方法是使所有可能的参数都保持静态。建议A最接近其原始代码,B是优化版本。我应该说清楚。我不推荐建议A。这样SQL server必须为每个记录截断声明变量的时间。拥有快速SQL查询的最佳方法是使所有可能的参数都保持静态。建议A最接近其原始代码,B是优化版本。我应该说清楚的。