快点......我为我的一个映射类设置了以下ID生成器策略:
<id name="UID" type="System.Guid">
<column name ="UID" sql-type ="uniqueidentifier" />
<generator class="guid.comb" />
</id>
有问题的实体涉及同步/合并行为,必须拥有全局唯一标识符。
首次在客户端应用程序上创建实体时,会分配UID
属性,使其与服务器上的equivilent实体的值相同。
但是,上述ID生成器策略会覆盖为新/瞬态实体提供的任何值。
什么是修复?我是否必须删除生成器策略并分配自己的GUID?或者,生成器策略是否可配置为仅在需要时生成guid.comb
?
答案 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 }
}
}