Respuesta

10

uno a uno

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

A tener en cuenta, que tiene que ser virtual

uno a muchos

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

muchos a muchos

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 que tiene que ser ICollection

enlaces Siguiendo tal vez útiles, click y click

espero que esto ayude.

EDITAR

Actualizado para incluir de uno a muchos.

editar # 2

Actualizado para incluir un potencial para hacer la factura < -> Producto escenario que fue solicitado por el comentario.

nota: esto no se ha probado, pero se debe poner en la dirección correcta

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 esto podría iterar a través de todos los elementos de la factura y luego foreach ser capaz de mostrar los detalles de la factura acerca de cada artículo, así como una descripción del producto en sí.

+2

No creo que necesiten ser virtuales (pero sí recomiendo hacerlas virtuales). Si no se marcan como virtuales, la relación seguirá existiendo, pero EF no utilizará la carga diferida y solo cargará el otro lado de la relación si la entidad correspondiente se ha cargado en la sesión. Además, para uno-a-muchos, cuya respuesta puede inferir cómo hacerlo, no necesita referencias en ambos lados, aunque puede tener sentido para las necesidades de la aplicación. –

+1

Solo me interesa otro enlace que me interese, me pareció una introducción bastante útil para codificar primero: http://weblogs.asp.net/scottgu/archive/2010/07/16/code-first-development-with -entity-framework-4.aspx – Manatherin

+0

Gracias por la respuesta hasta el momento. Una cosa más. SI está en un contexto de factura donde su factura tiene línea de artículo. Eso implicaría una tabla de relaciones. ¿Cómo se puede proceder con este escenario? – Rushino

Cuestiones relacionadas