我有以下课程:
public class Address
{
public virtual int Id { get; private set; }
public virtual IList<string> AddressLines { get; set; }
public virtual string CityOrTown { get; set; }
public virtual string County { get; set; }
public virtual string Postcode { get; set; }
public virtual string Country { get; set; }
public virtual Member Member { get; set; }
public Address()
{
AddressLines = new List<string>();
}
public virtual void AddAddressLine(string addressLine)
{
AddressLines.Add(addressLine);
}
}
和以下映射类:
public AddressMap()
{
Id(x => x.Id);
HasMany(x => x.AddressLines).Element("AddressLine");
Map(x => x.CityOrTown);
Map(x => x.County);
Map(x => x.Postcode);
Map(x => x.Country);
References(x => x.Member);
}
表'addresslines'是使用两列'Address_Id'和'AddressLine'创建的,带有'address'表的外键。
出于某种原因,当保存地址时,“AddressLines”集合不会持久保存到数据库中;
我错过了什么吗?
似乎没有关于映射IList的大量信息。我知道这不是可能的,因为字符串是值类型而不是实体类型,但我现在认为这应该是可能的吗?
答案 0 :(得分:3)
HasMany(x => x.AddressLines).Element("AddressLine").Cascade.AllDeleteOrphan();
答案 1 :(得分:1)
您需要设置默认的级联约定。
使用自动映射时,完成如下操作:
AutoMap.Assemblies(_assemblies)
.Conventions.Add(
// Do cascading saves on all entities so lists will be
// automatically saved
DefaultCascade.All(),
);
据我所知,你可以用映射类做同样的事情,但我不知道确切的语法。