0

私が集めたものから。これDbSetは型指定されたエンティティ キャッシュであり、保存時に永続化が必要なエンティティをDbContextすべてポーリングします。DbSetsNHibernate では、すべてのエンティティ タイプのキャッシングと変更検出が 1 つのISessionインスタンスに結合されます。

では、非常に単純な EF コードを NH コードに変換するにはDbSet、セッションですべての操作を直接実行するだけで済みますか?

4

1 に答える 1

3

EF でエンティティをクエリする唯一の厳密に型指定された方法は、Linq を使用することです。DbSet<T>そのため、各エンティティ タイプは、実装するデータ コンテキストに type の独自のプロパティを持ちますIQueryable<T>

NHibernate では、複数のクエリ API (LINQ、QueryOver、Criteria [非ジェネリック]) が利用可能であり、ユーザーは ISession を動的に使用することが期待されています。

したがって、代わりに、またはcontext.Companies.ToList()を実行できます。session.Query<Company>().ToList()session.QueryOver<Company>().List()session.Criteria(typeof(Company)).List()

NHibernate の優れた点は、API のすべてがインターフェイスであるため、単体テストDbSet<T>インスタンスとは異なり、モックを作成する必要がないことです。

于 2016-01-06T18:48:09.363 に答える