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做到了吗?
答案 0 :(得分:2)
我在父类中使用了DiscriminateSubClassesOnColumn。但是,非泛型版本默认为字符串,尽管子类指示它们需要整数值,因此存储了类型名称字符串。
我找到了DiscriminateSubClassesOnColumn的通用版本,一旦你使用它就可以正常工作并为鉴别器列选取整数值。
DiscriminateSubClassesOnColumn(“ProductType”,(int)0);
我想如果映射引擎在父类具有字符串映射和子类尝试发送int值这一事实之间抛出错误可能会有所帮助,但不匹配只是被忽略了。