1
我想將下列公司映射到以下地址。我希望它是單向關係,因爲地址類正在被其他幾個類使用。映射單向ManyToMany?
當我生成模式時,結點表已成功創建,但是當我嘗試保存實體時,結點表中沒有任何內容存在。只在地址和公司的表格中。我需要做些什麼來完成這項工作?
public CompanyMapping()
{
Map(x => x.Name);
HasManyToMany(x => x.Addresses);
}
public AddressMapping()
{
Id(x => x.Id);
Map(x => x.AddressLineOne)
.Not.Nullable();
Map(x => x.AddressLineTwo)
.Nullable();
Map(x => x.PostCode)
.Not.Nullable();
Map(x => x.City)
.Not.Nullable();
}
public class HasManyToManyCascadeConvention : IHasManyToManyConvention
{
public void Apply(IManyToManyCollectionInstance instance)
{
instance.Cascade.All();
instance.Inverse();
instance.Key.ForeignKey(Inflector.Underscore("fk_" + instance.EntityType.Name + "_" + instance.ChildType.Name));
}
}
<class xmlns="urn:nhibernate-mapping-2.2" name="Company" table="`company´">
<id name="Id">
<column name="company_id" />
<generator class="identity" />
</id>
<bag table="company_address" lazy="false" cascade="save-update" name="Addresses">
<key column="company_id" />
<many-to-many class="Address" column="address_id" />
</bag>
<property name="Name">
<column name="name" />
</property>
</class>
編輯2010-11-05:如果我添加映射BillingAddress和是DeliveryAddress這樣,我沒有任何問題。
References(x => x.BillingAddress)
.Column("billing_address_id")
.ForeignKey("fk_account_billing_address")
.Cascade.All()
.Fetch.Join();
References(x => x.DeliveryAddress)
.Column("delivery_address_id")
.ForeignKey("fk_account_delivery_address")
.Cascade.All()
.Fetch.Join();
在rails中我會使用多態關聯,我想這意味着在NHibernate中的任何關係沒有?
不起作用。我用其中一個慣例更新了代碼。我會發布的XML以及 – mhenrixon 2010-10-19 05:50:18
我已經嘗試過反向,而不是反向。使用不帶按鍵的鍵等等,但它會產生相同的結果。連接表中沒有任何內容。 – mhenrixon 2010-10-19 05:53:15
您的保存包裹在交易中嗎? – 2010-10-19 11:30:26