如果我有以下地图:
public class ParentMap : ClassMap<Parent>
{
this.Id(x => x.Id);
this.DiscriminateSubClassesOnColumn("Discriminator");
}
public class ChildMap : SubClassMap<Child> // Child : Parent
{
this.DiscriminatorValue("Foo");
}
在数据库中创建时,Child
的Discriminator列值为"Foo"
,但创建Parent
时,其值为"MyNamespace.Namespace.Parent"
。
我可以为DicriminatorValue
设置Parent
(例如"Bar"
)吗?
答案 0 :(得分:1)
这个public class ClassMap<T>
怎么样:
第一次重载
public DiscriminatorPart DiscriminateSubClassesOnColumn<TDiscriminator>(
string columnName)
第二次重载
/// <summary>
/// Specify that this entity should use a discriminator with it's subclasses.
/// This is a mapping strategy called table-per-inheritance-hierarchy; where all
/// subclasses are stored in the same table, differenciated by a discriminator
/// column value.
/// </summary>
/// <typeparam name="TDiscriminator">Type of the discriminator column</typeparam>
/// <param name="columnName">Discriminator column name</param>
/// <param name="baseClassDiscriminator">Default discriminator value</param>
public DiscriminatorPart DiscriminateSubClassesOnColumn<TDiscriminator>(
string columnName, TDiscriminator baseClassDiscriminator)
换句话说,使用第二个重载并提供默认值...
答案 1 :(得分:1)
public class ParentMap : ClassMap<Parent>
{
this.Id(x => x.Id);
this.DiscriminateSubClassesOnColumn("Discriminator", "Bar");
}
public class ChildMap : SubClassMap<Child> // Child : Parent
{
this.DiscriminatorValue("Foo");
}
DiscriminateSubClassesOnColumn方法中的第二个参数是baseClassDescriminator。