Свободное отображение таблицы соединений NHibernate - PullRequest
2 голосов
/ 02 июня 2010

Обратный инжиниринг существующей базы данных для сопоставления с N-Hibernate с использованием Fluent N-Hibernate.

Как мне это отобразить?

Таблица адресов

Id
Адрес1
Адрес2

Персональный стол

Id
Во-первых
Последний

Типы

Id
TypeName

Таблица PersonAddress (человек может иметь домашний, рабочий и т. Д. Адреса)

Id

PersonId (Id из таблицы person)

AddressId (идентификатор из таблицы адресов)

TypeId (идентификатор из таблицы поиска типов HOME, BUSINESS и т. Д.)

Любая помощь будет отличной. Спасибо

Вот еще один хитрый в дополнение к приведенному выше отображению. Не знаю, как легко было бы отобразить это.

Стол для вечеринок

Id Person Id указывает на Person

Таблицы идентификаторов

Id Идентификатор партии Введите идентификатор Значение идентификатора

Таблица сотрудников

Идентификатор сотрудника. Ни у одной таблицы участника или персоны нет внешнего ключа к этой таблице. Идентификатор сотрудника хранится в таблица идентификаторов. так, например, Таблица идентификаторов используется для хранения значений для разных типов. Идентификаторы для данной стороны могут быть DriverLicense, EmployeeId, SSN, номер кредитной карты и т. Д., Это может быть много значений.

Пример идентификатора данных

Id, PartyId, TypeId, IdentifierValue

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

Я пытаюсь обдумать это и просто не могу отобразить это.

1 Ответ

4 голосов
/ 03 июня 2010
// 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");
   }
}
...