Domanda

prendere in considerazione la seguente classe:

class Order {
    int OrderId {get; set;}
    int CustomerId {get; set;}
    string CustomerName {get; set;}
    //other fields go here
}

che viene mappata tabella Ordini. E 'possibile mappare la CustomerName di proprietà alla tabella Clienti attraverso la relazione chiave esterna?

È stato utile?

Soluzione

Sì, è possibile utilizzare il unirsi elemento mappatura per questo. Un'altra opzione è quella di mappare una vista invece di una tabella. Ma, se possibile, si dovrebbe prendere l'approccio orientato agli oggetti e mappare l'molti-a-molti tra Ordine e clienti.

Altri suggerimenti

Vi consiglio caldamente di non utilizzare <join/> per questo. Anche se sarebbe compiere ciò che avete richiesto, crea altri problemi.

Al contrario, l'ordine deve avere un rapporto con il cliente. È quindi possibile proiettare il nome, se si desidera, anche se è più facile usare solo order.Customer.Name.

Quindi, tutto si riduce a questo:

1) Aggiungere immobili Customer al Order

public virtual Customer Customer { get; set; }

2) Mappa la proprietà (nell'esempio, CustomerId è il nome della colonna FK)

<many-to-one name="Customer" column="CustomerId"/>

3) Se si specificamente desidera avere una proprietà CustomerName, progetto dal cliente:

public virtual string CustomerName { get { return Customer.Name; } }
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top