2011-10-23 42 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值,但不匹配纔剛剛忽略了一個事實之間的誤差也可能有幫助。