Как использовать Fluent nHibernate для отображения многотабличного объекта с использованием внешнего ключа первичного объекта с использованием отношения FK-> PK? - PullRequest
1 голос
/ 24 мая 2011

Это базовый пример из hhm-style nhibernate.

http://ayende.com/blog/2327/multi-table-entities-in-nhibernate

public class Person
{
  public int PersonId {get;set;}
  public string Name {get;set;}
  public string AddressStreetAddress {get;set;}
  public string AddressZipCode {get;set;}
}

В базе данных Person имеет первичный ключ Id, поле имени и адресиностранный ключ.Адрес имеет свой собственный первичный ключ, поле адреса улицы и поле почтового индекса.

Правильный ответ: «Не делай этого».К сожалению, я застрял с объектом сущности, который выставляет Id и Name другой сущности, и они все еще используются в другом месте.На данный момент этот объект не будет сохранен обратно в базу данных через nHibernate.

Я думаю, что способ сделать это - использовать адрес в качестве таблицы сущности и добавить поля Person из Join().Каковы последствия выполнения этого в качестве промежуточного этапа перехода?

1 Ответ

1 голос
/ 24 мая 2011

Я думаю, что способ сделать это - использовать адрес в качестве таблицы сущности и добавить поля Person из Join ().Каковы последствия выполнения этого в качестве промежуточного шага в переходе?

Это была плохая идея, потому что единственный идентификатор, который вы можете отобразить, - это идентификатор адреса, который может быть разделен междунесколько человек.

Вместо этого добавьте частное / защищенное свойство для Адрес-Персона, сопоставьте Адрес и укажите адрес, используя следующий свободный вызов.

References(Reveal.Member<Person, Address>("Address")).Column("address_id")

Затем вы можете использовать AddressStreetName иAddressZipCode для передачи через Address.StreetName и Address.Zipcode.После этого достаточно просто выполнить рефакторинг остальной системы, чтобы снова стать вменяемым.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...