それは質問ではなく、将来のためだけです... (理解するのに多くの時間を費やしました)
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; }
}
マッピング (Fluent 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);
この永続化を削除した後、正常に動作します