Свободное отображение nhibernate один-ко-многим без метода References - PullRequest
0 голосов
/ 04 октября 2018

Предположим, у меня есть два класса, связанных одним-двумя-многими:

public class Customer
{
    public virtual Guid Id {get; set;}
    public virtual string Name {get; set;}
    public virtual IList<Order> Orders {get; set;}
}

public class Orders
{
    public virtual Guid Id {get; set;}
    public virtual string Name {get; set;}
    // public virtual Customer Customer {get; set;}`
}

И я не хочу, чтобы задокументированный объект Customer в классе Orders существовал, но это означает, что я не могу использоватьметод References для сопоставления References (x => x.Customer).

Я использовал только метод HasMany (x => x.Orders) при отображении объекта Customer.Когда я создал таблицы и вставил данные, столбец внешнего ключа, который был создан nhibernate (Customer_id) в таблице заказов, равен NULL.

Возможно ли это сделать без добавления клиентасвойство объекта Orders?

1 Ответ

0 голосов
/ 07 октября 2018

Не уверен насчет истинной причины:

... Я не хочу, чтобы документ «Заказчик» был задан в Заказах ...

Скорее всего, этоскрыть его от верхних уровней, скрыть с точки зрения бизнес-домена.

В этом случае нам все равно следует извлечь выгоду из собственного поведения ORM, которое определяется сопоставлением ссылок.Т.е. мы должны оставить такую ​​ссылку на уровне POCO, сохранить ее сопоставленной, но оставить ее скрытой для любого другого использованияКак?Например, с protected доступом

//public  virtual Customer Customer {get; set;}
protected virtual Customer Customer {get; set;}

Это все еще может быть отображено, мы все равно получим прибыль от собственных функций NH ... но верхние уровни не смогут получить доступ к Заказчику из Заказа ...

...