流畅的NHibernate连接表映射

时间:2010-06-02 18:22:08

标签: nhibernate fluent-nhibernate nhibernate-mapping

使用Fluent N-Hibernate对现有数据库进行逆向工程以使用N-Hibernate进行映射。

我该如何映射?

地址表

标识
地址1
地址2

人员表

标识
首先
最后

类型

标识
TypeName

PersonAddress表(一个人可以有家庭,商业等地址)

Id

PersonId(人员表中的身份证)

AddressId(地址表中的Id)

TypeId(来自类型查找表HOME,BUSINESS等的ID。)

任何帮助都会很棒。感谢

除了上面的映射之外,这是另一个棘手的问题。不知道映射它有多容易。

派对表

标识 人员ID指向人

标识符表

标识 派对ID 输入ID 标识符值

员工表

员工ID没有派对或人员表具有此表的外键。员工ID存储在 标识符表。所以例如标识符表用于存储不同类型的值。给定方的标识符可以是DriverLicense,EmployeeId,SSN,Credit Card numeber等,这可能是很多值。

样本标识符数据

Id,PartyId,TypeId,IdentifierValue

1,1,1,EMPLID-1234 2,2,1,EMPLID-4567 3,3,1,EMPLID-34354

我正试图解决这个问题而无法将其映射到其中。

1 个答案:

答案 0 :(得分:4)

// this answer assumes you have functional Address, Person, Type, and PersonAddress objects.

public class AddressMap : ClassMap<Address>
{
  public AddressMap()
  {
    Id(x=>x.Id);
    Map(x=>x.Address1);
    Map(x=>x.Address2);
  }
}

public class PersonMap : ClassMap<Person>
{
   public PersonMap()
   {
     Id(x=>x.Id);
     Map(x=>x.First);
     Map(x=>x.Last);
   }
}

public class TypeMap : ClassMap<Type>
{
   public TypeMap()
   {
     Id(x=>x.Id);
     Map(x=>x.TypeName);
   }
}

public class PersonAddressMap : ClassMap<PersonAddress>
{
   public PersonAddressMap()
   {
     Id(x=>x.Id);
     References(x=>x.Person, "PersonId");
     References(x=>x.Address, "AddressId");
     References(x=>x.Type, "TypeId");
   }
}