是否有一种编写NHibernate映射的方法,以便您可以拥有一个由来自不同数据库表的字段组成的实体?
例如,我有一个人员和地址表,我希望地址字段出现在我的人物对象中。
我想要一个像这样的实体:
public class person
{
public virtual Guid Key{get; set;}
public virtual string Name {get; set;}
public virtual string Age {get; set;}
public virtual string Address1 {get; set;} //from address table
public virtual string Address2 {get; set;} //from address table
}
答案 0 :(得分:3)
如果您使用的是Fluent NHibernate,您可以使用WithTable,如下例所示:
public class PersonMap : ClassMap<Person>
{
public PersonMap()
{
Id(x => x.Key, "[Key]"); // Explicitly specify escaped column name to
// avoid problems with reserved words
Map(x => x.Name);
Map(x => x.Age);
WithTable("Address", m =>
{
m.Map(x => x.Address1);
m.Map(x => x.Address2);
});
}
}
答案 1 :(得分:1)
我认为here's你需要什么。不确定Fluent NHibernate部分的支持,以及我不确定这个想法的有效性。
答案 2 :(得分:0)
您还可以考虑在Person和Address之间使用多对多表。在这种情况下,拥有一个属性“地址”可能是有意义的,它只能容纳你想要的许多地址列表。
您可以使用映射来完成映射(或任何集合映射效果最佳)。