这不是一个问题,只是为了未来......(花了很多时间来弄清楚)
public class A
{
public int Id { get; set; }
public string Name { get; set; }
public string Type { get; set; }
}
public class B : A
{
public string Lastname { get; set; }
}
映射(流利的 NHibernate):
public class AMap : ClassMap<A>
{
Table("a");
Id(x => x.Id).GeneratedBy.Native();
Map(x => x.Name);
Map(x => x.Type);
DiscriminateSubClassesOnColumn<string>("Type")
.AlwaysSelectWithValue();
}
public class BMap : ClassMap<B>
{
DiscriminatorValue("BType");
Extends<A>();
Map(x => x.Lastname);
}
持久化 BMap 对象会导致异常:
例外:
Error dehydrating property value for A.Lastname
内部异常:
Invalid index 1 for this SqlParameterCollection with Count=1
这个不明显的异常表明发生了一些映射错误配置。实际上“选择”查询工作得很好。但是“插入”(ISession.SaveOrUpdate)会导致提到的错误。
使固定:
在 AMap 类中,您不需要该行:
Map(x => x.Type);
删除此持久性后工作正常