2011-10-23 68 views
0

DiscriminatorValue的默认值是Subclass的完全限定名称。使用流利NHibernate指定鉴别器值

我想将其映射到一个数字,例如枚举值或单个字符。我曾尝试在使用DiscriminatorValue的映射中指定它,但它没有影响,并且它与子类名称保持一致。

例子:

public class MovieMapping : SubclassMap<Movie> 
{ 
    public MovieMapping() 
    { 
     Map(m => m.Director); 
     HasMany(m => m.Actors) 
      .KeyColumn("MovieId") 
      .AsList(l => l.Column("ActorIndex")); 
     DiscriminatorValue("'M'"); 
    } 
} 

我本来期望看到M在列Discriminator,但它与完全合格的子类名称,而不是出现。

任何人都设法用Fluent NHibernate来做到这一点?

回答

2

我在父类中使用DiscriminateSubClassesOnColumn。然而,非泛型版本默认为一个字符串,尽管子类指示他们想要整数值,因此类型名称字符串已被存储。

我发现DiscriminateSubClassesOnColumn的通用版本,一旦你使用它,它工作正常,并拿起鉴别器列的整数值。

DiscriminateSubClassesOnColumn(“ProductType”,(int)0);

我想,如果映射引擎已经抛出父类中有一个字符串的映射,并在子类试图发送一个int值,但不匹配才刚刚忽略了一个事实之间的误差也可能有帮助。