NHibernate:如何检查实体是否持久化

时间:2009-11-26 02:07:01

标签: nhibernate

我发现自己编写了如下代码:

if (myEntity.Id == default(Guid))
   Session.Save(myEntity);

检查实体是否已经持久化(因此不需要保存)的最佳方法是什么?

我在编写这样的代码时做错了吗?

1 个答案:

答案 0 :(得分:5)

这就是我所做的,除了我通常在执行此检查的基类或扩展中使用IsNew()或IsTransient()方法。然后代码变为:

public Boolean IsTransient(){
 return this.Id == default(Guid);
}

不要忘记Session.SaveOrUpdate(entity)方法将导致持久化实体的更新(而不是插入),因此您可以使用此方法并忽略该检查。我喜欢做检查。