Сопоставление свойства с полем из другой таблицы в NHibernate - PullRequest
0 голосов
/ 21 марта 2010

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

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

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

Ответы [ 2 ]

0 голосов
/ 22 марта 2010

Я настоятельно рекомендую вам не использовать <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; } }
0 голосов
/ 21 марта 2010

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

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