Fluent Nhibernate - 将两个实体映射到同一个表

时间:2010-06-15 20:46:08

标签: c# nhibernate fluent-nhibernate nhibernate-mapping

我正在尝试将两个域实体映射到同一个表。我们正在为我们的域模型做一个智能实体,所以我们有一个可编辑地址和一个只读地址的概念。我已经使用Classmaps进行了映射,在我们尝试使用NHibernate中的SchemaExport类导出模式之前,一切似乎都很顺利。它错误地说该表已经存在。

我认为这很简单,我只是没有看到。

有什么想法吗?

由于

更新

还有一些我没有提及的其他事情。我对迄今为止所回答的人表示赞赏,但他们并不适合我们。

一个是我们有一个地址表,不包括任何具有地址的实体中的列。

另一个是我们不能使用通用基类。对于可编辑对象,我们有一个超类,它将验证行为添加到子类中。 readonly对象虽然不需要这种行为,但不应该有这些行为。

我考虑过一个界面,但后来我相信我最终会陷入困境,你可以在这个界面上再生一个readonly对象,然后改变它的值(因为大概NHibernate会使用所说的界面来保护对象)。 p>

因此,如果还有另一种方法来实现这一点,或者如果通过接口进行映射不会出现我所描述的问题,请告诉我。我还在学习NHibernate。

再次感谢!

2 个答案:

答案 0 :(得分:7)

您可以从schemaexport中排除只读类:

public class ReadonlyAdressMap : ClassMap<ReadonlyAdress>
{
ReadonlyAdressMap()
{
    Schemaaction.None();
    [...]
}
}

答案 1 :(得分:2)

创建一个基本抽象类实体,稍后将其扩展为可编辑地址和ReadOnly地址。