從我收集的。 DbSet
是一個鍵入的實體緩存,在保存時,DbContext
輪詢所有DbSets
以尋求需要持久性的實體。在NHibernate中,所有實體類型的緩存和更改檢測都組合在一個ISession
實例中。NHibernate是否不需要像Entity Framework的DbSet <T>這樣的設備?
因此,要將非常簡單的EF代碼轉換爲NH代碼,我可以取消DbSet
,並直接在會話中執行所有操作?
從我收集的。 DbSet
是一個鍵入的實體緩存,在保存時,DbContext
輪詢所有DbSets
以尋求需要持久性的實體。在NHibernate中,所有實體類型的緩存和更改檢測都組合在一個ISession
實例中。NHibernate是否不需要像Entity Framework的DbSet <T>這樣的設備?
因此,要將非常簡單的EF代碼轉換爲NH代碼,我可以取消DbSet
,並直接在會話中執行所有操作?
查詢EF實體的唯一強類型方法是使用Linq。因此,每個實體類型在實現IQueryable<T>
的數據上下文中都有自己的DbSet<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>
實例不同的模擬。
我想我只是建立一個'NhSet
ISession是完整的答案 –