从我收集到的。这DbSet
是一个类型化的实体缓存,在保存时,a会DbContext
轮询所有DbSets
需要持久性的实体。在 NHibernate 中,所有实体类型的缓存和更改检测都结合在一个ISession
实例中。
那么,要将非常简单的 EF 代码转换为 NH 代码,我可以取消DbSet
并直接在会话上执行所有操作吗?
从我收集到的。这DbSet
是一个类型化的实体缓存,在保存时,a会DbContext
轮询所有DbSets
需要持久性的实体。在 NHibernate 中,所有实体类型的缓存和更改检测都结合在一个ISession
实例中。
那么,要将非常简单的 EF 代码转换为 NH 代码,我可以取消DbSet
并直接在会话上执行所有操作吗?
在 EF 中查询实体的唯一强类型方法是使用 Linq。因此,每个实体类型DbSet<T>
在实现的数据上下文中都有自己的类型属性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>
实例那样涉及模拟。