Come faccio a creare questa mappatura di riferimento in Fluent NHibernate?
-
11-09-2019 - |
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
}
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