risposta

10

One to One

public class One 
{ 
    public int Id {get;set;} 
    public virtual Two RelationTwo {get;set;} 
} 

public class Two 
{ 
public int Id {get;set;} 
public virtual One RelationOne {get;set;} 
} 

cose da notare, deve essere virtuale

Uno a Molti

public class One 
{ 
    public int Id {get;set;} 
    public virtual ICollection<Two> RelationTwo {get;set;} 
} 

public class Two 
{ 
public int Id {get;set;} 
public virtual One RelationOne {get;set;} 
} 

molti a molti

public class One 
{ 
    public int Id {get;set;} 
    public virtual ICollection<Two> RelationTwo {get;set;} 
} 

public class Two 
{ 
public int Id {get;set;} 
public virtual ICollection<One> RelationOne {get;set;} 
} 

nota che ha bisogno di essere ICollection

seguenti link forse utile, click e click

Spero che questo aiuti.

EDIT

Aggiornato per includere uno a molti.

EDIT # 2

Aggiornato per includere un potenziale per fare la fattura < -> scenario di prodotto che è stato richiesto da un commento.

nota: questo non è testato, ma dovrebbe mettere nella giusta direzione

public class Invoice 
{ 
    public int Id {get;set;} 
    //.. etc. other details on invoice, linking to shipping address etc. 

    public virtual ICollection<InvoiceProduct> Items {get;set;} 
} 

public class InvoiceProduct 
{ 
    public int Id {get;set;} 
    public int Quantity {get;set;} 
    public decimal Price {get;set;} // possibly calculated 
    //.. other details such as discounts maybe 

    public virtual Product Product {get;set;} 
    public virtual Invoice Order {get;set;} // maybe but not required 
} 

public class Product 
{ 
    public int Id {get;set;} 
    //.. other details about product 
} 

Usando questo si potrebbe poi scorrere tutti gli elementi della fattura e poi foreach essere in grado di mostrare i dettagli della fattura su ogni oggetto e una descrizione del prodotto stesso.

+2

Non credo che debbano essere virtuali (ma consiglio vivamente di renderli virtuali). Se non sono contrassegnati come virtuali, la relazione continuerà a esistere, ma EF non utilizzerà il caricamento lazy e caricherà solo l'altro lato della relazione se l'entità corrispondente è stata caricata nella sessione. Inoltre, per uno-a-molti, che come si può dedurre dalla tua risposta, non ha bisogno di riferimenti su entrambi i lati, anche se può avere un senso che dipenda dai bisogni dell'applicazione. –

+1

Solo un altro link a cui sei interessato, ho trovato che è un'introduzione abbastanza utile da codificare prima: http://weblogs.asp.net/scottgu/archive/2010/07/16/code-first-development-with -entity-framework-4.aspx – Manatherin

+0

Grazie per la risposta finora. Un'altra cosa. SE è in un contesto di fatturazione in cui la fattura ha la riga dell'articolo. Ciò implicherebbe una tabella delle relazioni. Come procedi con questo scenario? – Rushino

Problemi correlati