16

私は Code First EntityFramework ( version="6.1.0") と EntityFramework.Extended (version="6.1.0.96, the latest build at the moment from here .は次
のようにアクセスされるものをDbContext公開します:DbSets

var set = ctx.Set<MyEntity>();

今日、私は EntityFramework.Extended ライブラリのFuture Queriesを試してみることにしました。

サンプルコードは次のとおりです。

using (var ctx = new MyDbContext())
{              
    var u = ctx.Set<User>().Future();
    var c = ctx.Set<Country>().Future();
    var users = u.ToList();
}

ドキュメントに関してはFuture()、メソッドが提供するDBへのクエリを1つだけ取得する必要がありFuture()ます。クエリはで起動する必要がありますがu.ToList();、次のようなエラーが発生します。

JIT コンパイラで内部制限が発生しました。

スタック トレース ダイブは、次のことを示しています。

EntityFramework.Future.FutureQueryBase 1.GetResult() で

EntityFramework.Future.FutureQuery 1.GetEnumerator() で

System.Collections.Generic.List 1..ctor (IEnumerable 1 コレクション) で

System.Linq.Enumerable.ToList[TSource] (IEnumerable 1 ソース) で

c:\Users\...\App\Program.cs:line 25 の App.Program.Main(String[] args) で

何が欠けているのか本当にわかりません。ConnectionStringがにMultipleResultSets設定されていることを確認しましたTRUE
の以前のビルド リリースでこれをテストしEF.Extenededましたが、同じエラーが発生しました。

どんなアイデアでも大いに役立ちます。

4

2 に答える 2

0

1年後に合計すると、Entity Framework を最新バージョン 6.1.3 に更新し、最新のEntityFramework.Extendedライブラリをインストールしました。注意すべきことの 1 つは、テストに「データベース ファースト」アプローチを使用し、すべて問題なく動作したことです。その時、私の手に負えない他の奇妙なものだったかもしれません。

これをサポートしてくれてありがとう。

于 2015-09-12T08:16:43.340 に答える
0

間違っているかもしれませんが、私はそう思います

ctx.Set<User>() 

DBSet を返しますが、.Future() はクエリの最後に使用することになっています。ctx.Set() の最後に .AsQueryable を追加するとよいでしょうか?

ctx.Set<User>().AsQueryable().Future()

また、EFデータベースをそのように構築している場合は、ctx.usersを使用できると思います。

于 2015-09-10T19:43:02.207 に答える