2012-04-10 350 views
0

所以,我被困在此设置...一个假设将与儿童名册一类,并且有两种类型的孩子:男孩女孩&映射集NHibernate的

public class ClassRoster 
{ 
public IList<Child> Children{get;set;} 
} 

public abstract class Child 
{ 
public string Sex {get;} 
} 

pubic class Boy 
: Child 
{ 
public override string Sex { get { return "M"; } } 
} 

public class Girl 
: Child 
{ 
public override string Sex { get { return "F"; } } 
} 

(最有可能的,这是一个不好的例子)......当我去检索数据库孩子的名单,我需要指定识别器的收藏价值,或者可以使用NHibernate的我为孩子所做的映射/男孩/女孩已经?

我ASING,因为我这样做同样的一个项目我工作的时候,我得到一个“WrongClassException”从NHibernate的抛出。


我觉得这样不够清楚。在我的项目中,我已经处理了可以调用到数据库中的映射,并将一张儿童列表拉出来,并按照预期映射了男孩和女孩。我想要做的就是打电话给班级名单,并获得一个收集所有男孩和女孩的儿童名单。

+0

坏的是,你使用字符串在恶劣的方式,即用枚举类型的insatead。 – 2012-04-10 21:29:17

+0

好的......所以它实际上是“真正”实现中的枚举。我具体询问当我绘制通用的“孩子”类型时,是否需要告诉包如何形成一个女孩以及如何形成一个男孩,或者我接近这一切都是错误的? – 2012-04-10 21:30:43

+0

该地图将非常令人满意。因为装袋不应该导致任何问题。至于解决的对象是负责儿童 – 2012-04-10 21:34:21

回答

0

我相信你要找的是什么NHibernate - Inheritance Mapping

+0

类disriminator我有,在已经为对象。我试图找出的是,如果我必须再次为集合定义继承映射,或者它自动使用实际对象映射hbm文件的继承映射。 – 2012-04-11 12:54:41

+1

它是自动的。 – 2012-04-11 13:01:20

0

结束,目前一些愚蠢的。有我没有考虑到3级,而ClassRoster和学校之间的映射是问题......我有做一个一对一的映射连接起来,“学校”,而不是“高中”。

如果我可以概括的代码就够了,我会在这里发布出来以供进一步参考...说实话,这是一个pebcak错误。