使用Fluent NHibernate指定鉴别器值

时间:2011-10-23 17:10:11

标签: nhibernate fluent

DiscriminatorValue的默认值是Subclass的完全限定名称。

我想将其映射到一个数字,例如枚举值或单个字符。我已经尝试使用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做到了吗?

1 个答案:

答案 0 :(得分:2)

我在父类中使用了DiscriminateSubClassesOnColumn。但是,非泛型版本默认为字符串,尽管子类指示它们需要整数值,因此存储了类型名称字符串。

我找到了DiscriminateSubClassesOnColumn的通用版本,一旦你使用它就可以正常工作并为鉴别器列选取整数值。

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

我想如果映射引擎在父类具有字符串映射和子类尝试发送int值这一事实之间抛出错误可能会有所帮助,但不匹配只是被忽略了。