Как создать это сопоставление ссылок в Fluent NHibernate?
-
11-09-2019 - |
Вопрос
Используя Fluent NHibernate, мне нужно понять, как сопоставить мой класс Invoice.
public class Buyer
{
public virtual int Id { get; set; }
public virtual string Name { get; set; }
public virtual string TaxRegNo { get; set; }
// .... more properties....
}
public class Invoice
{
public virtual int Id { get; set; }
public virtual int IdBuyer { get; set; }
public virtual Buyer Buyer { get; set; }
// ....more properties
}
Проблема в том, что я хочу иметь в классе Invoice:
- BuyerId — просто целочисленный идентификатор для связи ссылки и внешнего ключа.
- копия почти всех объектов недвижимости покупателя (его учетный документ и свойства не могут быть изменены после подтверждения) - как компонент
Я пытался это сделать, используя следующее сопоставление, но оно не работает
public InvoiceMap()
{
Id(x => x.Id);
References(x => x.IdBuyer);
Component(x => x.Buyer, BuyerMap.WithColumnPrefix("buyer_"));
// ....more properties
}
Решение
Обычно вы не сопоставляете одновременно внешний ключ и дочерний объект.Если вы сопоставляете оба, сделайте это при сопоставлении (или аналогичном):
References(x => x.Buyer);
Map(x => x.IdBuyer).Column("BuyerId").Not.Insert().Not.Update();
Тогда вы не дублируете имя столбца в операторах SQL, что приводит к ошибкам, связанным с несовпадающим количеством параметров.
Не связан с StackOverflow