0

私はもともと、このエラーは Entity Framework に固有のものだと思っていました。しかし、BreezeJS の EFContextProvider と何か関係があると考えてください。

Entity Framework と Linq-to-sql の両方で正常に動作する linq クエリがあります。

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

クエリは成功します。

どんな助けでも大歓迎です:)

4

1 に答える 1

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);
于 2013-05-31T19:32:30.570 に答える