使用 NHibernate,如何可靠地检查给定实体是 transient 的(即尚未持久化)?我看到的资源推荐了类似的东西:
public bool IsTransient()
{
return this.Id == default(Guid);
}
假设我的 已经持久化了 实体有一个整数 ID 并且它以某种方式等于 0,这个方法不会失败吗?
最佳答案
如果 0 在您的上下文中是有效的主键,那么是的,那将是不可靠的。
基本上,对象 id 上的“未保存值”决定了它是暂时的还是持久的。默认情况下,该类型设置为 null 或 default() 。您可以在进行映射时选择手动设置。
只要你在上面代码中的逻辑符合 Nhibernate 认为的 transient 对象,你就很好。并且 Nhibernate 会将任何 Id 属性等于“未保存值”的对象视为 transient 对象。
关于c# - 如何可靠地确定实体是 transient 的?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7051226/