Domanda

Uso Fluent NHibernate Ho bisogno di un indizio su come mappare la mia classe 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
}

Il problema è che voglio avere in classe Fattura:

  • BuyerId - solo un ID intero per riferimento e relazione di chiave foregin
  • una copia di quasi tutte le proprietà acquirente (il suo documento e le proprietà di contabilità non può essere modificato dopo la conferma) - come componente

Ho provato a questo utilizzando seguente mappatura, ma non funziona

    public InvoiceMap()
    {
        Id(x => x.Id);

        References(x => x.IdBuyer);
        Component(x => x.Buyer, BuyerMap.WithColumnPrefix("buyer_"));
    // ....more properties
    }
È stato utile?

Soluzione

Che normalmente non mappare sia la chiave esterna e l'oggetto figlio. Se lo fai mappare entrambi, poi fare questo nella mappatura (o simile):

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

Allora non raddoppiare sul nome della colonna nelle istruzioni SQL, che fa sì che gli errori intorno numeri non corrispondenti di parametri.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top