首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >错误: LINQ实体不识别DataLength方法

错误: LINQ实体不识别DataLength方法
EN

Stack Overflow用户
提问于 2014-09-22 05:31:35
回答 2查看 2.1K关注 0票数 6

我有个简短的问题要问。首先使用EF6模型。

代码语言:javascript
复制
var db = new MyEntities(GetEntityConnectionString());

ObjectContext objectContext = ((IObjectContextAdapter)db).ObjectContext;
ObjectSet<DOCUMENT> objectSet = objectContext.CreateObjectSet<DOCUMENT>();
var results = objectSet.Where("SqlServer.DATALENGTH(it.BINARYCONTENT)>50000");
Assert.IsTrue(results.ToList().Count == 9);

var results2 = objectSet.Where(doc=>System.Data.Objects.SqlClient.SqlFunctions.DataLength( doc.BINARYCONTENT)>50000);
Assert.IsTrue(results2.ToList().Count == 9);

var results3 = db.DOCUMENTS.Where(doc => System.Data.Objects.SqlClient.SqlFunctions.DataLength(doc.BINARYCONTENT) > 50000);
Assert.IsTrue(results3.ToList().Count == 9);

第一个断言成功,那么当执行results2和结果3时,为什么要获得以下异常?

“System.NotSupportedException”类型的异常发生在EntityFramework.SqlServer.dll中,但未在用户代码中处理 附加信息: LINQ不识别方法'System.Nullable`1System.Int32 DataLength(Byte[])‘方法,该方法无法转换为存储表达式。

有什么办法让其他人成功吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-10-01 23:27:15

结果,答案是我使用了错误的函数。

而不是

代码语言:javascript
复制
System.Data.Objects.SqlClient.SqlFunctions.DataLength

我应该用

代码语言:javascript
复制
System.Data.Entity.SqlServer.SqlFunctions.DataLength

位于EntityFramework.SqlServer.dll内

票数 8
EN

Stack Overflow用户

发布于 2014-09-22 16:57:52

EF不知道如何将C#方法转换为SQL代码。

如果您更改为此,它应该可以工作:(请注意,我添加了".ToList()")

代码语言:javascript
复制
var results2 = objectSet.ToList().Where(doc=>System.Data.Objects.SqlClient.SqlFunctions.DataLength( doc.BINARYCONTENT)>50000);
Assert.IsTrue(results2.ToList().Count == 9);

var results3 = db.DOCUMENTS.ToList().Where(doc => System.Data.Objects.SqlClient.SqlFunctions.DataLength(doc.BINARYCONTENT) > 50000);
Assert.IsTrue(results3.ToList().Count == 9);

当您将一个变量声明为EF查询时,它直到第一次枚举时才实际运行。在运行where子句之前,将其枚举到列表中,将导致您的Where条件在CLR对象上运行,而不是EF试图作为db查询的一部分运行。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25967201

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档