Как создать это эталонное сопоставление в Fluent NHibernate? - PullRequest
1 голос
/ 02 декабря 2009

Используя 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
    }

1 Ответ

4 голосов
/ 02 декабря 2009

Обычно вы не сопоставляете внешний ключ и дочерний объект. Если вы отображаете оба, сделайте это в отображении (или аналогичном):

References(x => x.Buyer);
Map(x => x.IdBuyer).Column("BuyerId").Not.Insert().Not.Update();

Тогда вы не удваиваете имя столбца в операторах SQL, что приводит к ошибкам вокруг несоответствующего числа параметров.

...