如何强制nhibernate设置子项的外键?
我在映射中有一个集合:如何强制nhibernate设置子项的外键?,nhibernate,mapping,collections,foreign-keys,Nhibernate,Mapping,Collections,Foreign Keys,我在映射中有一个集合: <bag name="Values" cascade="all-delete-orphan" lazy="false" inverse="true"> <key column="[TemplateId]"/> <one-to-many class="MyNamespace.Value, MyLib"/> </bag> 值对象具有外键[TemplateId]。两个实体的生成器都设置为“标识”。 当我为父模板对象调
<bag name="Values" cascade="all-delete-orphan" lazy="false" inverse="true">
<key column="[TemplateId]"/>
<one-to-many class="MyNamespace.Value, MyLib"/>
</bag>
值对象具有外键[TemplateId]。两个实体的生成器都设置为“标识”。
当我为父模板对象调用session.Save()时,值对象的[TemplateId](外键)设置为零,因此会出现SQL异常。
如何让nhibernate将子项的FK值设置为插入的父对象的值?我自己管理过:
我唯一需要做的就是按照以下方式设计子对象映射和持久化:
<many-to-one name="Template" class="MyNamespace.Template, MyLib"
column="[TemplateId]" not-null="true" />
因此,子对象引用的是父对象,而不是父对象的Id解决方案如下: