从我收集到的。这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>实例那样涉及模拟。