使用 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/

10-11 08:07