ISubclassConventionを実装することで、クラス階層内のサブクラスのディスクリミネーター値を変更できます。現在、基本クラスにもディスクリミネーター値を設定する方法を探しています。規則のオーバーライドで変更する方法はありますか、それとも階層の手動マッピングを追加する必要がありますか?
(IClassConventionはDiscriminatorValueプロパティを提供しますが、読み取り専用であるため、運がありません。)
ISubclassConventionを実装することで、クラス階層内のサブクラスのディスクリミネーター値を変更できます。現在、基本クラスにもディスクリミネーター値を設定する方法を探しています。規則のオーバーライドで変更する方法はありますか、それとも階層の手動マッピングを追加する必要がありますか?
(IClassConventionはDiscriminatorValueプロパティを提供しますが、読み取り専用であるため、運がありません。)
私が知っている唯一の方法は、基本クラスに対してのみ単純なマッピングオーバーライドを作成することです。
public class DepotMappingOverride : IAutoMappingOverride<Depot>
{
/// <summary>
/// Alter the auto mapping for this type
/// </summary>
/// <param name="mapping">Auto mapping</param>
public void Override(AutoMapping<Depot> mapping)
{
mapping.DiscriminateSubClassesOnColumn("Type", "BaseDepot");
}
}
これで、「BaseDepot」がDepotクラスの識別子の値になります。