我的模型是这样的:
public class SelectionItem : BaseEntity // BaseEntity ==> id, timestamp stuff
{//blabla}
public class Size : SelectionItem
{//blabla}
public class Adultsize : Size
{//blabla}我想使用fluent nhibernate的class-hierarchy per-table-method
public class SelectionItemMap : BaseEntityMap<Entities.SelectionItem.SelectionItem>
{
public SelectionItemMap()
{
Map(x => x.Name);
Map(x => x.Picture);
Map(x => x.Code);
DiscriminateSubClassesOnColumn("SelectionItemType");
}
}并在以下子类上重置DiscriminateSubClassesOnColumn:
public class SizeMap : SubclassMap<Size>
{
DiscriminateSubClassesOnColumn("SizeType")
}
public Adultsize : SubclassMap<Adultsize>
{}但这不管用。
我在网上找到了一个解决方案:link text,但根据resharper的说法,这种方法是折旧的。
如何解决?感谢您提供更多信息。
发布于 2010-08-18 20:16:33
您不需要在SubclassMap中添加DiscriminateSubClassesOnColumn()。它将类名作为鉴别器的值。
代码的正确版本
public class SelectionItem : ClassMap<SelectionItem>
{
public SelectionItem()
{
Id(x => x.Id);
DiscriminateSubClassesOnColumn("SelectionItemType");
}
}
public class Size : SubclassMap<Size>
{
}
public class Adultsize : SubclassMap<Adultsize>
{
}发布于 2009-12-17 00:26:27
当您使用class-hierarchy-per-table-method时,使用一列作为判别器,然后为每个具体的类定义该判别器的值。
尝试如下所示:
public class SelectionItem : ClassMap<SelectionItem>
{
public SelectionItem()
{
Id(x => x.Id);
DiscriminateSubClassesOnColumn("SelectionItemType");
}
}
public class Size : SubclassMap<Size>
{
public Size()
{
DiscriminatorValue("Size")
DiscriminateSubClassesOnColumn("SizeType");
}
}
public class Adultsize : SubclassMap<Adultsize>
{
public Adultsize()
{
DiscriminatorValue("Adult")
}
}发布于 2010-04-28 21:13:09
这不起作用,DiscriminateSubClassesOnColumn()在SubclassMap中不可用。
https://stackoverflow.com/questions/1915730
复制相似问题