代码之家  ›  专栏  ›  技术社区  ›  Andy

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

  •  1
  • Andy  · 技术社区  · 14 年前

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

    我想这很简单,我只是看不到。

    有什么想法吗?

    谢谢

    更新

    还有一些其他的事情我没有提到我应该拥有的。我理解到目前为止那些答案,但它们对我们不起作用。

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

    另一个原因是我们不能使用公共的基类。对于可编辑对象,我们有一个向子类添加验证行为的超级类。只读对象不需要这种行为,也不应该有这些行为。

    我考虑过一个接口,但是我相信我最终会出现一种情况,在这种情况下,你可以将一个只读对象强制转换到这个接口,然后改变它的值(因为可能NHibernate会使用这个接口来对对象进行水合物化)。

    因此,如果有其他方法来完成这项工作,或者通过接口进行映射不会遇到我描述的问题,请告诉我。我仍在学习NHibernate。

    再次感谢!

    2 回复  |  直到 13 年前
        1
  •  7
  •   Firo    13 年前

    可以从SchemaExport中排除只读类:

    public class ReadonlyAdressMap : ClassMap<ReadonlyAdress>
    {
    ReadonlyAdressMap()
    {
        Schemaaction.None();
        [...]
    }
    }
    
        2
  •  2
  •   jpabluz    14 年前

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