Répondre

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;} 
} 

choses à noter, il doit être virtuel

un à plusieurs

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;} 
} 

many to many

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;} 
} 

Notez qu'il doit être ICollection

liens Après peut-être utile, click et click

Hope this helps.

EDIT

Mise à jour pour inclure un à plusieurs.

EDIT # 2

Mise à jour pour inclure un potentiel pour faire de la facture < -> scénario de produit qui a été demandé par commentaire.

Note: Ceci est non testé, mais devrait vous mettre dans la bonne direction

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 
} 

En utilisant vous pouvez alors ce itérer tous les éléments sur la facture et foreach pouvoir afficher les détails de la facture à propos de chaque article ainsi qu'une description du produit lui-même.

+2

Je ne crois pas qu'ils doivent être virtuels (mais je recommande fortement de les rendre virtuels). Si elles ne sont pas marquées comme virtuelles, la relation existera toujours, mais EF n'utilisera pas le chargement paresseux et ne chargera l'autre côté de la relation que si l'entité correspondante a été chargée dans la session. En outre, pour un-à-plusieurs, la façon dont le faire peut être inféré par votre réponse, n'a pas besoin de références des deux côtés, bien que cela puisse avoir un sens dépendre des besoins de l'application. –

+1

Juste un autre lien que vous faites être intéressé par, je l'ai trouvé pour être une intro assez utile au code d'abord: http://weblogs.asp.net/scottgu/archive/2010/07/16/code-first-development-with -entity-framework-4.aspx – Manatherin

+0

Merci pour la réponse à ce jour. Encore une chose. SI c'est dans un contexte de facture où votre facture a une ligne d'article. Cela impliquerait une table de relation. Comment procédez-vous avec ce scénario? – Rushino

Questions connexes