Mic*_*ski 3 c# nhibernate fluent-nhibernate
我有一个小问题nHibernate(流利)我有两个对象,一个包含另一个 - 父和子(预定义的对象,只读).
映射:
public class ParentClass
{
public virtual int Id { get; set; }
public virtual ChildClass Metoda { get; set; }
}
public ParentClassMap() {
Table("Wyceny");
Id(x => x.Id).Column("Id").GeneratedBy.TriggerIdentity();
References(x => x.Metoda).Column("RMW_ID");
}
public ChildClass
{
public virtual int Id { get; set; }
public virtual string Nazwa { get; set; }
}
public ChildClassMap()
{
Table("Metody");
Id(x => x.Id).Column("Id");
Map(x => x.Nazwa).Column("Nazwa_met");
}
Run Code Online (Sandbox Code Playgroud)
在我选择id = 0的子对象之前,一切都运行良好,读取仍然适用于id = 0,但是当我尝试使用正确的ChildObject保存或更新Parent时(先前从db通过nHibernate重新编译),nHibernate存储null而不是value .
有什么建议?
nHibernate 3.3.1.4000流利1.4.0.0
这里的问题是unsaved-value.NHibernate必须决定是否插入或更新带对象的操作.此决定来自unsaved-value设置,默认情况下int设置为0.
尝试扩展你的映射ChildClass:
public ChildClassMap()
{
Table("Metody");
Id(x => x.Id)
.Column("Id")
.UnsavedValue(-1);
...
Run Code Online (Sandbox Code Playgroud)
见5.1.4.id,引用:
unsaved-value(可选 - 默认为"合理"值):标识符属性值,指示实例是新实例化的(未保存),将其与在先前会话中保存或加载的瞬态实例区分开来.
这是Adam Bar的很好的Id映射概述(文章的后半部分)