【发布时间】:2011-06-22 17:57:49
【问题描述】:
我对 nhibernate 并不陌生,但我无法让它保存/更新字符串集合。
我有一个实体,这个实体有 3 个字符串集合 (Iesi.ISet<string>)。
我对实体上的字符串集合进行了更改,并调用了Session.Save、Session.Update、Session.SaveOrUpdate,没有任何效果。
这一切都在休眠事务中,事务正在提交。我可以看到这一切都发生在 NHProf 中,没有错误,没有例外。 Nhibernate 只是忽略我的收藏。
它可以很好地更新父实体。
是的,级联已设置。为了保存更新,我还尝试了 all-delete-orphan,这实际上是我想要的。
实体上的集合是Iese.Iset<string>。它们在实体的构造函数中使用 new Iesi.Collections.Generic.HasheSet<string>() 进行初始化。
我将粘贴到映射文件中:
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="NameRemovedV2.Web" namespace="NameRemovedV2.Web.Models">
<class name="NameRemovedUser" table="NameRemovedUsers">
<id name="NameRemovedUserID">
<generator class="hilo"></generator>
</id>
<many-to-one cascade="save-update" class="NameRemovedSite" column="NameRemovedSiteID" name="Site" not-null="true" foreign-key="FK_NameRemovedSites_NameRemovedUsers"></many-to-one>
<property name="Username" not-null="true" unique="true" unique-key="UX_NameRemovedUsers"></property>
<property name="FirstName" not-null="false"></property>
<property name="LastName" not-null="false"></property>
<property name="EmailAddress" not-null="false"></property>
<property name="DealerCode" not-null="false"></property>
<property name="RegistrationDate" not-null="true"></property>
<set cascade="save-update" inverse="true" name="LeftSide" table="LeftSides">
<key column="NameRemovedUserID" not-null="true" foreign-key="FK_NameRemovedUsers_LeftSides"></key>
<element column="ElementID" not-null="true"></element>
</set>
<set cascade="save-update" inverse="true" name="RightSide" table="RightSides">
<key column="NameRemovedUserID" not-null="true" foreign-key="FK_NameRemovedUsers_RightSides" ></key>
<element column="ElementID" not-null="true"></element>
</set>
<set generic="true" cascade="save-update" inverse="true" name="Hide" table="Hides">
<key column="NameRemovedUserID" not-null="true" foreign-key="FK_NameRemovedUsers_Hides" ></key>
<element column="ElementID" type="String" not-null="true"></element>
</set>
</class>
</hibernate-mapping>
【问题讨论】:
标签: c# nhibernate