Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/299.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.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# ';滴答声';在LINQ to实体中不支持_C#_Linq_Entity Framework - Fatal编程技术网

C# ';滴答声';在LINQ to实体中不支持

C# ';滴答声';在LINQ to实体中不支持,c#,linq,entity-framework,C#,Linq,Entity Framework,这是我的代码: var count = this.Repository.ObjectContext.LogDetail .Count(p => p.LogId == logId &&System.Data.Objects.EntityFunctions. p.LogDetailTime. == logDetailTime.Ticks && p.OperationId == operationId);

这是我的代码:

 var count = this.Repository.ObjectContext.LogDetail
                .Count(p => p.LogId == logId &&System.Data.Objects.EntityFunctions. p.LogDetailTime. == logDetailTime.Ticks && p.OperationId == operationId);
            return (count > 0);
我得到了这个错误:

LINQ to中不支持指定的类型成员“Ticks” 实体。仅初始值设定项、实体成员和实体导航 支持属性


如何解决此问题?

当使用某些无法在数据库中使用的方法/属性时,LINQ to实体经常会出现这种情况

在这种情况下,可以将其值放入变量中

我注意到您也有语法错误,但您可以修复它。在修复
System.Data.Objects.EntityFunctions的语法错误后,应该可以使用以下代码。p、 日志详细时间。

var ticks = logDetailTime.Ticks;
var count = this.Repository.ObjectContext.LogDetail
            .Count(p => p.LogId == logId &&System.Data.Objects.EntityFunctions. p.LogDetailTime. == ticks && p.OperationId == operationId);
        return (count > 0);

当使用一些不能在数据库中使用的方法/属性时,LINQ to实体经常会出现这种情况

在这种情况下,可以将其值放入变量中

我注意到您也有语法错误,但您可以修复它。在修复
System.Data.Objects.EntityFunctions的语法错误后,应该可以使用以下代码。p、 日志详细时间。

var ticks = logDetailTime.Ticks;
var count = this.Repository.ObjectContext.LogDetail
            .Count(p => p.LogId == logId &&System.Data.Objects.EntityFunctions. p.LogDetailTime. == ticks && p.OperationId == operationId);
        return (count > 0);

如上所述,您不应该将所有记录提取到内存中,然后再进行筛选。您可以轻松比较日期值,而无需转换为刻度:

var query = this.Repository.ObjectContext.LogDetail
            .Where(p => p.LogId == logId 
                     && p.OperationId == operationId
                     && EntityFunctions.DiffSeconds(p.LogDetailTime,
                                                      logDetailTime) == 0);
return (query.Any());
请注意,
DiffSeconds
当差值大于
Int32.MaxValue
时,可能会导致溢出(错误:datediff函数导致溢出)。我不知道你想要的精度是多少,比较的值相差有多远,所以你必须在这里做出选择。你真的对同样数量的滴答声感兴趣吗?很难想象。也许
DiffMinutes
就足够了

另一种可能的优化方法是使用
Any
代替
Count
Any
在存在的地方生成一个
子句。这可能比SQL中的
COUNT
更有效

您得到的是,现在只传输一个布尔值(位),而不是潜在的大量记录



注意:在Entity Framework 6中,Entity Functions
已替换为。

如上所述,您不应将所有记录提取到内存中,然后进行筛选。您可以轻松比较日期值,而无需转换为刻度:

var query = this.Repository.ObjectContext.LogDetail
            .Where(p => p.LogId == logId 
                     && p.OperationId == operationId
                     && EntityFunctions.DiffSeconds(p.LogDetailTime,
                                                      logDetailTime) == 0);
return (query.Any());
请注意,
DiffSeconds
当差值大于
Int32.MaxValue
时,可能会导致溢出(错误:datediff函数导致溢出)。我不知道你想要的精度是多少,比较的值相差有多远,所以你必须在这里做出选择。你真的对同样数量的滴答声感兴趣吗?很难想象。也许
DiffMinutes
就足够了

另一种可能的优化方法是使用
Any
代替
Count
Any
在存在的地方生成一个
子句。这可能比SQL中的
COUNT
更有效

您得到的是,现在只传输一个布尔值(位),而不是潜在的大量记录



注意:在实体框架6中,
EntityFunctions
已被替换。

为什么不直接使用
p.LogDetailTime==LogDetailTime
?类型不匹配吗?为什么不直接使用
p.LogDetailTime==LogDetailTime
?类型不匹配吗?我有溢出问题,我无法摆脱它。我必须检查年范围内的差异是否大于30秒。我知道,在SQL中,我可以先将日期转换为十进制,然后再进行比较,但我找不到一种使用EF的方法。现在,我必须分两部分进行查询:一部分过滤时间超过一个月,然后我进行另一个查询,包括剩余的侦察和秒过滤。我必须说这有点难看。我有溢出的问题,我无法摆脱它。我必须检查年范围内的差异是否大于30秒。我知道,在SQL中,我可以先将日期转换为十进制,然后再进行比较,但我找不到一种使用EF的方法。现在,我必须分两部分进行查询:一部分过滤时间超过一个月,然后我进行另一个查询,包括剩余的侦察和秒过滤。我得说这有点难看。