Breeze.WebAPI.EFContextProvider“在此上下文中仅支持基元类型或枚举类型”

时间:2013-05-22 04:48:43

标签: entity-framework breeze

我原本以为这个错误特定于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);

查询成功。

任何帮助将不胜感激:)

1 个答案:

答案 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);