NHibernate - 为实体添加注释属性(存储与加入)

时间:2013-04-01 14:13:40

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

我有一个系统,我需要能够在Customer和Location模型上添加Comment字段,但我无法触及现有表的模式。但是,我可以添加一个评论表。我简化了这个例子。我们希望能够将此评论添加到更多的模型中,他们都使用Guid作为Id。

此现有系统是具有自己的数据访问层的第三方系统。

我们刚刚开始进入NHibernate。从我可以看出它看起来像一个加入地图。

示例:

public class Customer 
{
    public Guid Id { get; private set; }
    public string FirstName { get; private set; }
    public string LastName { get; private set; }
    public string Comment { get; set; }
}    

public class Location
{
    public Guid Id { get; private set; }
    public string Name { get; private set; }
    public string Address { get; private set; }
    public string Comment { get; set; }
}

注意:我们确信我们希望将评论视为一对一关系,而不是一对一关系。

如何配置单独的表只捕获Id和Comment?我正在寻找合适的术语。我正在寻找使用XML的示例(如果可能的话,请使用Fluent配置)。我想在一个表中保留所有对象的注释。感谢。

2 个答案:

答案 0 :(得分:0)

如果无法更改数据库架构,则选项非常有限。 可能,您可以使用映射来完成。 看看这里:

http://ayende.com/blog/3961/nhibernate-mapping-join

尝试在映射中为所有实体使用相同的列名。

答案 1 :(得分:0)

如果你可以添加注释表(和现有表中的相应键列),那么比流畅的映射看起来像

public class CustomerMap : ClassMap<Customer>{
  public CustomerMap(){
        //...other columns mappings

        References(c=>c.Comment).Column("CommentId");
  }
}

并重复其他实体。您也可以在那里设置所需的获取模式(加入)和其他操作。我在那里写了References(这么多对一),但如果你需要一对一的映射,那就不是一个很大的区别