代码之家  ›  专栏  ›  技术社区  ›  dav_i

父类的区分值

  •  2
  • dav_i  · 技术社区  · 11 年前

    如果我有以下地图:

    public class ParentMap : ClassMap<Parent>
    {
        this.Id(x => x.Id);
        this.DiscriminateSubClassesOnColumn("Discriminator");        
    }
    
    public class ChildMap : SubClassMap<Child> // Child : Parent
    {
        this.DiscriminatorValue("Foo");
    }
    

    在数据库中创建时 Child 具有鉴别器列值 "Foo" 但当 Parent 创建时,它具有以下值 "MyNamespace.Namespace.Parent" .

    有没有办法让我 DicriminatorValue 对于 父母亲 (例如。 "Bar" )?

    2 回复  |  直到 11 年前
        1
  •  3
  •   user3215952    10 年前
    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。

        2
  •  1
  •   Radim Köhler user2134822    11 年前

    这个怎么样 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)
    

    换句话说,使用第二个重载并提供默认值。。。