【发布时间】:2012-03-01 06:06:19
【问题描述】:
最近,我尝试在我的项目中使用 NHibernate。看下面的代码
var _sessionFactory = cfg.BuildSessionFactory();
var _session = _sessionFactory.OpenSession();
var user = new User() {UserName = "carl", Gender = 1};
_session.Save(user);
_session.Delete(user);
_session.Flush();
_session.Close();
_sessionFactory.Dispose();
NHibernate 会将用户保存到数据库中,然后将其从数据库中删除。我知道代码有点奇怪,但我真的希望 NHibernate 知道你真的不需要访问 db 两次。实体框架会有所不同,它会在内存中切换用户对象的状态,当刷新时,它会访问数据库以持久化它。当然,状态标记为已删除的用户不会被持久化。所以这里不需要数据库访问。这就是我想要的!!
有没有人知道 NHibernate 有那个接口来改变像 EF 这样的实体状态?
【问题讨论】:
-
用户类的映射是什么?它是否需要(假定的)id-key 的数据库往返?如果您知道要删除该对象,为什么还要保留它?为什么您认为单个数据库调用(删除)如此昂贵以至于您需要避免它?您是否尝试过使用您回滚的事务?
标签: c# nhibernate frameworks entity status