我正在尝试将两个域实体映射到同一个表。我们正在为我们的域模型做一个智能实体,所以我们有一个可编辑地址和一个只读地址的概念。我已经使用Classmaps进行了映射,在我们尝试使用NHibernate中的SchemaExport类导出模式之前,一切似乎都很顺利。它错误地说该表已经存在。
我认为这很简单,我只是没有看到。
有什么想法吗?
由于
更新
还有一些我没有提及的其他事情。我对迄今为止所回答的人表示赞赏,但他们并不适合我们。
一个是我们有一个地址表,不包括任何具有地址的实体中的列。
另一个是我们不能使用通用基类。对于可编辑对象,我们有一个超类,它将验证行为添加到子类中。 readonly对象虽然不需要这种行为,但不应该有这些行为。
我考虑过一个界面,但后来我相信我最终会陷入困境,你可以在这个界面上再生一个readonly对象,然后改变它的值(因为大概NHibernate会使用所说的界面来保护对象)。 p>
因此,如果还有另一种方法来实现这一点,或者如果通过接口进行映射不会出现我所描述的问题,请告诉我。我还在学习NHibernate。
再次感谢!
答案 0 :(得分:7)
您可以从schemaexport中排除只读类:
public class ReadonlyAdressMap : ClassMap<ReadonlyAdress>
{
ReadonlyAdressMap()
{
Schemaaction.None();
[...]
}
}
答案 1 :(得分:2)
创建一个基本抽象类实体,稍后将其扩展为可编辑地址和ReadOnly地址。