2012-12-10 3 views
3

awsome EF5를 먼저 사용하려고합니다. 추가 필드가있는 many-to-many 테이블을 만들 필요가 있습니다.EF5 코드 먼저 - 추가 필드가있는 Many to Many

제품 테이블, 주문 테이블이 있고 "크기"필드가있는 주문의 제품 테이블이 필요합니다.

내가 한 것은 그 사이의 연결 테이블 인 "ProductOrder"라는 새로운 클래스를 만들고 참조를 만들었습니다.

새 주문을 만들 때 작동하지만 주문을 가져올 때 작동하지 않습니다. (삽입 후 DB에있는) 연결된 주문을받지 못합니다.

왜 그런가? :)

내 수업

은 다음과 같습니다

public class Order 
{ 
    public int ID { get; set; } 
    ... 
    public ICollection<ProductOrder> Products { get; set; } 
    public Order() 
    { 
     Products = new HashSet<ProductOrder>(); 
    } 
} 

public class Product 
{ 
    public int ID { get; set; } 
    public ICollection<ProductOrder> Orders { get; set; } 
} 

public class ProductOrder 
{ 
    public int ID { get; set; } 
    public int ProductID { get; set; } 
    public int OrderID { get; set; } 
    public int Size { get; set; } 

    [ForeignKey("OrderID")] 
    public Order order { get; set; } 

    [ForeignKey("ProductID")] 
    public Product product { get; set; } 
} 

및 onModelCreating에

modelBuilder.Entity<Order>() 
     .HasMany(p => p.Products) 
     .WithRequired(o => o.order) 
     .HasForeignKey(o => o.OrderID); 

    modelBuilder.Entity<Product>() 
     .HasMany(o => o.Orders) 
     .WithRequired(p => p.product) 
     .HasForeignKey(p => p.ProductID); 

답변

3

귀하의 탐색 속성과 탐색 속성을 표시, 내가 본 바로는

+0

Virtual to ALL 참조 오브젝트를 추가 한 후 작동합니다! 많은 많은 감사합니다 :) – Roman

0

가상 할 필요가 가상은 이러한 속성에 대한 지연로드를 켭니다.

게으른로드없이 작동하게하는 다른 방법은 선택 항목에 .include() 문을 추가하는 것입니다. 이렇게하면 EF가 원하는 추가 데이터를 회수합니다.