2

有没有办法编写 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

}
4

3 回答 3

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);
    });
  }
}
于 2009-02-25T10:31:03.617 回答
1

我想就是你需要的。不确定对 Fluent NHibernate 部分的支持,以及我不确定这个想法的有效性。

于 2009-02-25T10:30:27.940 回答
0

您还可以考虑在 Person 和 Address 之间使用多对多表。在这种情况下,拥有一个属性“Addresses”可能是有意义的,它可以只保存一个您想要的任意多个地址的列表。

您可以使用映射进行映射(或任何最有效的集合映射)来完成此操作。

于 2009-02-26T01:33:07.037 回答