在Castle项目ActiveRecord中创建多态类

在Castle项目ActiveRecord中创建多态类,activerecord,castle-activerecord,Activerecord,Castle Activerecord,我使用ActiveRecord在数据库中存储我的类 我有等级制度,比如说男人和女人继承自人类阶级。人类数据库表包含字段Sex,男性为0,女性为1。我希望能够根据Sex字段加载类Human,也就是说,如果Sex为0,则类Human的加载实际上应该创建类Man的实例(这样除了从Human表中读取字段外,还可以从Man表中读取一些其他字段) 是否可以借助CastleProject ActiveRecord属性?如果没有,是否可以重写某些可重写的方法?您正在谈论的 表中的“性别”列将用作NHiberna

我使用ActiveRecord在数据库中存储我的类

我有等级制度,比如说男人和女人继承自人类阶级。人类数据库表包含字段Sex,男性为0,女性为1。我希望能够根据Sex字段加载类Human,也就是说,如果Sex为0,则类Human的加载实际上应该创建类Man的实例(这样除了从Human表中读取字段外,还可以从Man表中读取一些其他字段)

是否可以借助CastleProject ActiveRecord属性?如果没有,是否可以重写某些可重写的方法?

您正在谈论的

表中的“性别”列将用作NHibernate使用的鉴别器


编辑:如果你有额外的Man字段,你可以将它们放在一个大表中,也可以将它们拆分出来,并使用类表继承(这意味着在获取Man对象时进行连接),因为它从Man表中获取Man字段,从Man表中获取Man字段。

谢谢,Nebakanezer,你的回答非常有用。然而,有一个问题,我总是得到人类阶级,而不是男人或女人。我没有为这个类指定DiscriminatorValue,但为男人和女人指定了DiscriminatorValue,然而,这并没有帮助。我正在使用人类类的FindAllByProperty,希望它会根据Sex字段返回一个Man和Human实例的列表。我做错了什么?我自己找到了解决方案——我的子类(男/女)是内部的,而人是公共的。这就是不断产生人类实例的原因。