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的例子(如果可能的话,流畅配置)。我想在一个表中保留所有对象的评论。谢谢。
如果您可以添加注释表(以及现有表中相应的键列),那么流畅映射可以看起来像
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尝试在映射中为所有实体使用相同的列名