为什么NHibernate不支持自我跟踪实体有任何架构或哲学原因吗?基于会话的更改跟踪很好,但在某些极少数情况下无法使用(例如,会话中有大量实体,但每个事务只修改了一个实体)。
你有什么看法?感谢。答案 0 :(得分:1)
您还可以查看FindDirty
的{{1}}方法。在这里,您可以注入自己的脏跟踪机制,而不会影响业务逻辑,也不会放弃任何其他NH功能。
答案 1 :(得分:0)
我真的不知道“自我跟踪实体”是什么意思,我想它来自实体框架? IStatelessSession
不会缓存实体。会话不是构建为在缓存中有很多实体,而是仅包含要在屏幕上显示给用户的实体。如果您需要批处理或长时间运行的事务,其他工具将比NHiberante更好地完成工作。我想它不是由NHiberante构建的,原因如下:
答案 2 :(得分:0)
NHibernate和Entity-Framework之间存在着重要的区别。 EF的方法 ObjectContext.SaveChanges(..)仅保存对实体所做的更改,因为它已成为对象上下文的一部分。 例如:
MyEntity e = new MyEntity();
e.Key = blabla;
e.Id = 3242342;
e.Name = "Hugo";
using(MyObjectContext ct = new MyObjectcontext())
{
ct.MyEntity.Attach(e);
ct.SaveChanges();
}
这根本不会改变数据库,因为当实体成为上下文的一部分时,不会对实体进行任何更改。在NHibernate中,值Hugo将被保存到数据库中。 Nhibernate中不需要自我跟踪实体。