【发布时间】:2015-11-01 18:52:14
【问题描述】:
我们有一个Address 实体,它有一个引用City 表的外键。一个Address 只引用一个City,但一个City 应该能够被许多Addresses 引用。
public class Address : Entity
{
public virtual string AddressLine1 { get; set; }
public virtual string AddressLine2 { get; set; }
public virtual City City { get; set; }
}
public class City : Entity
{
public virtual string CityName { get; set; }
}
这是Address 类映射。
public class AddressClassMapping : ClassMapping<Address>
{
public AddressClassMapping()
{
this.Schema("dbo");
this.Table("addresses");
this.Cache(e => e.Usage(CacheUsage.ReadWrite));
this.Id(e => e.Id,
m => { m.Column("id_address"); m.Generator(Generators.Native);});
this.Property(e => e.AddressLine1,
m => { m.Column("address_line_1"); m.NotNullable(true); });
this.Property(e => e.AddressLine2,
m => { .Column("address_line_2");
m.NotNullable(true); });
this.ManyToOne(
e => e.City,
m =>
{
m.Column("id_city");
m.Cascade(Cascade.All);
});
}
}
我应该如何更改类映射以便:
- 当我删除一个城市时,该城市的所有地址都会被删除?
- 当我删除地址时,城市不受影响?
- 我可以通过更新外键来更新 Address 的 City 属性吗?
到目前为止,我已经使用了Cascade 属性,并且遇到了以下问题:更新地址的城市会导致更新 City 表,或者我无法在不违反外键约束的情况下删除地址。
【问题讨论】:
标签: c# nhibernate nhibernate-mapping cascade