【问题标题】:Specifying the Discriminator Value using Fluent NHibernate使用 Fluent NHibernate 指定鉴别器值
【发布时间】:2011-10-23 17:10:10
【问题描述】:

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'");
    }
}

我本来希望在Discriminator 的列中看到M,但它却提供了完全限定的子类名称。

还有其他人设法使用 Fluent NHibernate 做到这一点吗?

【问题讨论】:

    标签: nhibernate fluent


    【解决方案1】:

    我在父类中使用 DiscriminateSubClassesOnColumn。然而,非通用版本默认为字符串,尽管子类表明它们需要整数值,因此类型名称字符串被存储。

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

    DiscriminateSubClassesOnColumn("ProductType", (int)0);

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

    【讨论】:

      猜你喜欢
      • 2013-05-20
      • 1970-01-01
      • 1970-01-01
      • 2021-02-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-26
      相关资源
      最近更新 更多