0

从我收集到的。这DbSet是一个类型化的实体缓存,在保存时,a会DbContext轮询所有DbSets需要持久性的实体。在 NHibernate 中,所有实体类型的缓存和更改检测都结合在一个ISession实例中。

那么,要将非常简单的 EF 代码转换为 NH 代码,我可以取消DbSet并直接在会话上执行所有操作吗?

4

1 回答 1

3

在 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>实例那样涉及模拟。

于 2016-01-06T18:48:09.363 回答