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

cbp*_*cbp 1 nhibernate

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

if (myEntity.Id == default(Guid))
   Session.Save(myEntity);
Run Code Online (Sandbox Code Playgroud)

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

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

Mic*_*uso 5

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

public Boolean IsTransient(){
 return this.Id == default(Guid);
}
Run Code Online (Sandbox Code Playgroud)

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