任何使用父表的主键的1-M,但使用不同列的任何1-M都不起作用。它正确生成SQL,但是将键的值放入SQL而不是我想要的列值。
示例映射:
public TemplateMap()
{
Table("IMPORT");
LazyLoad();
Id(x => x.ImportId).Column("IMPORT_ID").GeneratedBy.Assigned();
Map(x => x.ImportSetId).Column("IMPORTSET_ID");
HasMany(x => x.GoodChildren)
.Access.CamelCaseField()
.KeyColumns.Add("IMPORT_ID")
.Cascade.Delete()
.Inverse();
HasMany(x => x.BadChildren)
.Access.CamelCaseField()
.KeyColumns.Add("IMPORTSET_ID")
.Cascade.Delete()
.Inverse();
}
延迟加载适用于GoodChildren,但不适用于BadChildren。
两个孩子的SQL语句都是正确的。但是使用了错误的值。如果IMPORT_ID的值为10且IMPORTSET_ID的值为12.值10将用于BadChildren的SQL中的IMPORTSET_ID而不是12。
任何人都有任何想法需要改变才能让BadChildren正常工作吗?
注意:
GoodChildren链接到模板上的IMPORT_ID
BadChildren链接到模板上的IMPORTSET_ID
答案 0 :(得分:0)
我不确定如何以您想要的方式执行此操作,但另一种方法是使用子表上的列来标识记录的类型:
HasMany(x => x.GoodChildren)
.Table("tblChildren")
.Where("CHILD_TYPE='Good'");
HasMany(x => x.BadChildren)
.Table("tblChildren")
.Where("CHILD_TYPE='Bad'");
答案 1 :(得分:-1)
升级到3.0版解决了这个问题。