我有一个父子表,并且使用一对多关系创建和映射实体。在一对多方面,当我使用 Inverse() 时,子表的外键值被插入为空。
public class TableA
{
public virtual long ID { get; set; }
public virtual string Name { get; set; }
public virtual IList<TableB> TableB { get; set; }
}
public class TableB
{
public virtual long ID { get; set; }
public virtual string Name { get; set; }
public virtual TableA TableA { get; set; }
}
public class TableAMap : ClassMap<TableA>
{
public TableAMap()
{
Id(x=>x.ID);
Map(x=>x.Name).Column("Name");
HasMany(x=>x.TableB)
.KeyColumn("TableA_ID")
.Inverse()
.Cascase.All()
.Not.LazyLoad();
}
}
public class TableBMap : ClassMap<TableB>
{
public TableBMap()
{
Id(x=>x.ID);
Map(x=>x.Name).Column("Name");
References(x=>x.TableA).Column("TableA_ID").Not.LazyLoad();
}
}
注意当Inverse()
从多对一删除时,插入新记录没有任何问题,并且插入外键没有任何问题,但是当我更新记录时,现有记录的外键被替换为空。
请帮助我,我查看了类似的问题,但这对我没有帮助。