当已经提供ID时,跳过新的/瞬态NHibernate实体的ID生成器策略

时间:2010-07-19 17:09:36

标签: nhibernate null generator

快点......我为我的一个映射类设置了以下ID生成器策略:

<id name="UID" type="System.Guid">
    <column name ="UID" sql-type ="uniqueidentifier" />
    <generator class="guid.comb" />
</id>

有问题的实体涉及同步/合并行为,必须拥有全局唯一标识符。

首次在客户端应用程序上创建实体时,会分配UID属性,使其与服务器上的equivilent实体的值相同。

但是,上述ID生成器策略会覆盖为新/瞬态实体提供的任何值。

什么是修复?我是否必须删除生成器策略并分配自己的GUID?或者,生成器策略是否可配置为仅在需要时生成guid.comb

1 个答案:

答案 0 :(得分:0)

我认为你可以通过将UID作为私有字段并通过属性控制访问来实现这一目标。

public class MyClass
{
    private Guid _uid;

    protected MyClass() { // parameterless ctor for NH }

    public MyClass(Guid uid) { _uid = uid; // assign on creation }

    public Guid Uid
    {
        get { return _uid; }
        private set { // do nothing or compare _uid to Guid.Empty and set }
    }
}