NHibernate -为实体添加注释属性(Store with Join)

本文关键字:Store with Join 属性 注释 实体 添加 NHibernate | 更新日期: 2023-09-27 18:06:45

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

这个现有的系统是一个第三方系统,有自己的数据访问层。

我们才刚刚开始接触NHibernate。从我可以看出,它看起来像一个Join映射。

的例子:

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; }
}

注意:我们希望注释是1对1关系,而不是1对多关系。

我如何配置一个单独的表,只是捕获Id和评论?我在找合适的术语。我正在寻找XML的例子(如果可能的话,流畅配置)。我想在一个表中保留所有对象的评论。谢谢。

NHibernate -为实体添加注释属性(Store with Join)

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

public class CustomerMap : ClassMap<Customer>{
  public CustomerMap(){
        //...other columns mappings
        References(c=>c.Comment).Column("CommentId");
  }
}

并对其他实体重复此操作。您还可以在那里设置所需的获取模式(连接)和其他操作。我在这里写了References(多对一)但是如果你需要一对一的映射它没有太大的区别

如果您不能更改数据库模式,那么您的选择非常有限。也许,你可以用映射来做。请看这里:

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

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