私が集めたものから。これDbSet
は型指定されたエンティティ キャッシュであり、保存時に永続化が必要なエンティティをDbContext
すべてポーリングします。DbSets
NHibernate では、すべてのエンティティ タイプのキャッシングと変更検出が 1 つのISession
インスタンスに結合されます。
では、非常に単純な EF コードを NH コードに変換するにはDbSet
、セッションですべての操作を直接実行するだけで済みますか?
私が集めたものから。これDbSet
は型指定されたエンティティ キャッシュであり、保存時に永続化が必要なエンティティをDbContext
すべてポーリングします。DbSets
NHibernate では、すべてのエンティティ タイプのキャッシングと変更検出が 1 つのISession
インスタンスに結合されます。
では、非常に単純な EF コードを NH コードに変換するにはDbSet
、セッションですべての操作を直接実行するだけで済みますか?
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>
インスタンスとは異なり、モックを作成する必要がないことです。