我原本以为这个错误特定于Entity Framework。但现在认为它与BreezeJS的EFContextProvider有关。
我有一个linq查询,可以在Entity Framework和Linq-to-sql中正常工作:
var dc = new EFContextProvider<MyEntities>();
var query =
(from t1 in dc.Context.Table1
where (from t2 in dc.Context.Table2 select t2.TypeID).Distinct().Contains(t1.TypeID)
select t1);
在执行此查询时,我收到错误:无法创建“Table2”类型的常量值
但是,如果我直接针对Entity Framework执行查询:
var dc = new MyEntities();
var query =
(from t1 in dc.Table1
where (from t2 in dc.Table2 select t2.TypeID).Contains(t1.TypeID)
select t1);
查询成功。
任何帮助将不胜感激:)
答案 0 :(得分:1)
在复制和调查问题后,我们发现错误发生在EF中,我们无法修复它。但是,我们发现此行为是由于查询中的“虚线”路径
dc.Context.Table2
,解决方法是简单地避免这样:
var dc = new EFContextProvider<MyEntities>();
var dc1 = dc_breeze.Context;
var query =
(from t1 in dc.Context.Table1
where (from t2 in dc1.Table2 select t2.TypeID).Distinct().Contains(t1.TypeID)
select t1);