我在使用抽象类NHibernate的,自动映射和链接抽象类
这是一个类似于此
public abstract class AbstractClassA {}
public abstract class AbstractClassB : AbstractClassA {}
public class ClassA : AbstractClassB {}
当我尝试的多条链使用NHibernate类结构的一些麻烦,自动映射和构建这些映射,我收到以下错误
“FluentNHibernate.Cfg.FluentConfigurationException未处理 消息:创建SessionFactory时使用了无效或不完整的配置。请参阅PotentialReasons集合和InnerException以获取更多详细信息。
- 数据库不是通过数据库的方法进行配置。”
但是,如果我删除AbstractClassB抽象的关键词,一切工作正常。这个问题只有当我有一个以上的抽象类中发生类层次结构。
我手工配置的自动映射为包括AbstractClassA和AbstractClassB使用下面的结合类
public class BindItemBases : IManualBinding
{
public void Bind(FluentNHibernate.Automapping.AutoPersistenceModel model)
{
model.IncludeBase<AbstractClassA>();
model.IncludeBase<AbstractClassB>();
}
}
我不得不做一些黑客来解决这个问题,但是必须有更好的方法来实现这个目标。当然nHibernate支持这样的东西,我只是没有想出如何正确配置它。
干杯,
詹姆斯
我想包括他们,因为有几个不同的类从他们派生。如果我删除了摘要,所有的东西都可以正常工作,但我宁愿不这样做。如果我不包含基础,那么派生类将分别获得它们自己的表。我不想那样。如果我从AbstractClassA直接派生ClassA,那么事情就是按照我想要的方式工作的。当我在中间添加AbstractClassB时,它会翻倒。 – 2010-04-03 05:42:00
为什么不直接从映射中排除AbstractClassB,而将其作为基类放置? – 2010-04-03 06:02:10
如果我从映射中排除AbstractClassB,我得到一个映射异常,'从表ClassA的关联引用一个未映射的类:AbstractClassB' – 2010-04-03 09:20:06