NHibernate不需要像Entity Framework';s数据库集<;T>;
本文关键字:数据库 lt gt 不需要 Entity Framework NHibernate | 更新日期: 2023-09-27 18:29:17
根据我收集的信息。DbSet
是一个类型化的实体缓存,在保存时,DbContext
轮询所有DbSets
以查找需要持久性的实体。在NHibernate中,所有实体类型的缓存和更改检测都组合在一个ISession
实例中。
所以,要将非常简单的EF代码转换为NH代码,我可以去掉DbSet
,直接在会话上执行所有操作?
在EF中查询实体的唯一强类型方法是使用Linq。因此,在实现IQueryable<T>
的数据上下文中,每个实体类型都有自己的类型为DbSet<T>
的属性。
在NHibernate中,有多个查询API(LINQ、QueryOver、Criteria[非通用])可用,用户需要动态使用ISession。
因此,您可以执行session.Query<Company>().ToList()
、session.QueryOver<Company>().List()
或session.Criteria(typeof(Company)).List()
而不是context.Companies.ToList()
。
NHibernate的好处在于,API是一个接口,因此与单元测试DbSet<T>
实例不同,没有任何嘲讽。