문제

If I have the following Maps:

public class ParentMap : ClassMap<Parent>
{
    this.Id(x => x.Id);
    this.DiscriminateSubClassesOnColumn("Discriminator");        
}

public class ChildMap : SubClassMap<Child> // Child : Parent
{
    this.DiscriminatorValue("Foo");
}

When being created into the database, a Child has the Discriminator column value "Foo" but when a Parent is created it has the value "MyNamespace.Namespace.Parent".

Is there a way I can set a DicriminatorValue for Parent (e.g. "Bar")?

도움이 되었습니까?

해결책 2

What about this public class ClassMap<T>:

The first overload

public DiscriminatorPart DiscriminateSubClassesOnColumn<TDiscriminator>(
    string columnName)

The second overload

/// <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)

Other words, use the second overload and provide the default value...

다른 팁

public class ParentMap : ClassMap<Parent>
{
    this.Id(x => x.Id);
    this.DiscriminateSubClassesOnColumn("Discriminator", "Bar");        
}

public class ChildMap : SubClassMap<Child> // Child : Parent
{
    this.DiscriminatorValue("Foo");
}

The second parameter from the method DiscriminateSubClassesOnColumn is the baseClassDescriminator.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top