我有一个系统,我需要能够在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配置)。我想在一个表中保留所有对象的注释。感谢。
答案 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
(这么多对一),但如果你需要一对一的映射,那就不是一个很大的区别