父类的歧视价值

时间:2014-02-28 09:49:45

标签: c# nhibernate fluent-nhibernate

如果我有以下地图:

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")吗?

2 个答案:

答案 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。