Сопоставление свойства с полем из другой таблицы в NHibernate

StackOverflow https://stackoverflow.com/questions/2485123

Вопрос

рассмотрим следующий класс:

class Order {
    int OrderId {get; set;}
    int CustomerId {get; set;}
    string CustomerName {get; set;}
    //other fields go here
}

который сопоставлен с таблицей заказов.Возможно ли сопоставить свойство CustomerName с таблицей Customers через отношение внешнего ключа?

Это было полезно?

Решение

Да, вы можете использовать Присоединиться элемент отображения для этого.Другой вариант - сопоставить вид вместо таблицы.Но, если возможно, вам следует использовать объектно-ориентированный подход и сопоставить отношения "многие ко многим" между Заказом и Клиентом.

Другие советы

Я настоятельно рекомендую вам не использовать <join/> для этого.Хотя это позволило бы выполнить то, что вы просили, это создает другие проблемы.

Вместо этого Заказ должен иметь связь с Клиентом.Затем вы можете спроецировать имя, если хотите, хотя его проще просто использовать order.Customer.Name.

Итак, все сводится к следующему:

1) Добавить Customer собственность на Order

public virtual Customer Customer { get; set; }

2) Сопоставьте свойство (в примере CustomerID - это имя столбца FK).

<many-to-one name="Customer" column="CustomerId"/>

3) Если вы специально хотите иметь CustomerName собственность, спроецируйте ее у Заказчика:

public virtual string CustomerName { get { return Customer.Name; } }
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top