【发布时间】:2014-11-16 00:18:53
【问题描述】:
我有一个简短的问题。 首先使用 EF6 模型。
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);
第一个assert成功了,为什么执行results2和results 3时会出现如下异常?
EntityFramework.SqlServer.dll 中出现“System.NotSupportedException”类型的异常,但未在用户代码中处理
附加信息:LINQ to Entities 无法识别方法 'System.Nullable`1[System.Int32] DataLength(Byte[])' 方法,并且此方法无法转换为存储表达式。
有没有办法让其他断言成功?
【问题讨论】:
-
现在已经快一周了。不管这个问题有多老,我仍然有兴趣听取建议。
标签: c# linq entity-framework linq-to-entities entity-framework-6