Fluent NHibernate Automap присоединился к подклассу Установка ключа - PullRequest
0 голосов
/ 29 мая 2009

При автоматическом объединении подкласса в беглом nhibernate я не могу понять, как дать объединенному подклассу первичный ключ.

public class Address:Entity {
    public virtual string Address1 { get; set; }
    public virtual string Address2 { get; set; }
    public virtual string City { get; set; }
    public virtual string State { get; set; }
    public virtual string Zip { get; set; }
    public virtual string Phone { get; set; }
    public virtual string Fax { get; set; }
    public virtual IList<Location> Locations { get; set; }
}

public class Location:Address {
    public virtual Address BillingAddress { get; set; }
    public virtual string OfficeHours { get; set; }
    public virtual string PatientAgeRestrictions { get; set; }
    public virtual bool WheelchairAccess { get; set; }
    public virtual string ContactPerson { get; set; }
    public virtual string ContactEmail { get; set; }
    public virtual string ContactPhone { get; set; }
    public virtual string ContactFax { get; set; }
    public virtual string TaxId { get; set; }
}

Я хочу, чтобы у Location был собственный идентификатор "location_ id" со своей последовательностью. Затем я хочу, чтобы сопоставленный адрес через столбец address_id.

Сейчас он генерирует местоположение с "addressid" в качестве первичного ключа, а это не то, что я хочу. Как я могу изменить это с автоматическим отображением?

1 Ответ

0 голосов
/ 29 мая 2009

Я не уверен, что у вас есть отношения присоединенного подкласса. То есть по определению объединенный подкласс имеет тот же идентификатор, что и его родительский класс. Например, в вашей базе данных может храниться сущность Person для общей информации о людях, например, имя / возраст / и т. Д., А затем сущность подкласса Employee, которая хранится в другой таблице и содержит такие данные, как положение, зарплата, и даты приема на работу. Таким образом, Employee является подтипом Person, и для получения полного объекта «Сотрудник-человек» необходимо объединить две таблицы по их первичным ключам (например, SELECT * FROM Employee INNER JOIN Person ON Employee.Employee_id = Person.Person_id).

Вы уверены в своей реляционной модели здесь? Является ли Location действительно подтипом Address? Немного исходя из названий вашей собственности, мне кажется, что это не то, что вы намерены. Похоже, что у вас, вероятно, есть много ко многим между Address и Organization (то есть, может быть много «организаций» по одному и тому же адресу, а «организация» может иметь много адресов), с «контактное лицо» для организации по конкретному адресу. В этом случае вы должны отобразить «организация», «контакт» и другую сущность, которая определяет отношения между Address и «организацией».

...