EF

2016-08-12 2 views
0

을 사용하여 상위 개체 및 부모 (부모 부모 외래 키)의 목록을 모두 저장 아래 코드는 SalesOrder 테이블에 Sales Orders를 저장하고 SalesOrderDetail 테이블에 Sales Order Details를 자동 저장합니까?EF

내 목표는 내 기본 엔티티의 목록을 만들고 네비게이션 속성을 사용하여 다른 목록을 만들어 한꺼번에 저장할 수있게하는 것입니다.

List<SalesOrder> salesOrders = new List<SalesOrder>() 
{ 
    new SalesOrder() 
    { 
     OrderDate = DateTime.Now, 
     OrderDetails = new List<SalesOrderDetail>() 
     { 
      new SalesOrderDetail() { ItemId = 1 }, 
      new SalesOrderDetail() { ItemId = 2 }, 
      new SalesOrderDetail() { ItemId = 3 } 
     } 
    }, 
    new SalesOrder() 
    { 
     OrderDate = DateTime.Now, 
     OrderDetails = new List<SalesOrderDetail>() 
     { 
      new SalesOrderDetail() { ItemId = 1 }, 
      new SalesOrderDetail() { ItemId = 2 } 
     } 
    } 
}; 

_context.SalesOrders.AddRange(salesOrders); 
_context.SaveChanges(); 

또는 내가 좋아하는 뭔가를해야 할 것입니다 :

아래를 참조하십시오

_context.SalesOrders.AddRange(salesOrders); 
_context.SalesOrderDetails.AddRange(salesOrders[0].OrderDetails); 
_context.SalesOrderDetails.AddRange(salesOrders[1].OrderDetails); 
_context.SaveChanges(); 
+3

코드를 실행하고 작동하는지 확인하십시오. –

+0

@ ZivWeissman의 충고가 가장 좋습니다. 실험! 그러나, 안락 의자 (생각할 것없이 실험을하지 않고) 관점에서. 왜 이것이 효과가 있을지 모르겠다. EF는 속성을 사용하여 엔티티를 연결합니다. EF는 SQL 조인 조건과 같습니다. SalesOrders 나 SalesOrderDetails 모두 관련 엔티티에 연결해야하는 정보가 제공되지 않았습니다. EF가 두 엔티티를 실제로 연결하는 방법을 보여주는 답을 보여주는 예를 게시 할 것입니다. – DWright

답변

1

내가 엔티티 프레임 워크 코어 1.0 (EF7)를 사용하고과는 완벽하게 작동 다음을. 내 모델이 설치되어 방법을 참고하시기 바랍니다 :

public class SalesOrder 
    { 
     public int Id {get; set;} 
     public DateTime OrderDate {get; set;} 
     // Nav property 
     public ICollection<SalesOrderDetail> OrderDetails { get; set; } 
    } 

    public class SalesOrderDetail 
    { 
     public int Id {get; set;} 
     // Foreign key property 
     public int SalesOrderId {get; set;} 
     // Nav property 
     public SalesOrder SalesOrder {get; set;} 
    } 

은 간단히 다음과 같은 일을하고 자동으로 저를 지정할 필요없이 올바른 외래 키 값을 저장 :

List<SalesOrder> salesOrders = new List<SalesOrder>() 
{ 
    new SalesOrder() 
    { 
     OrderDate = DateTime.Now, 
     OrderDetails = new List<SalesOrderDetail>() 
     { 
      new SalesOrderDetail() { ItemId = 1 }, 
      new SalesOrderDetail() { ItemId = 2 }, 
      new SalesOrderDetail() { ItemId = 3 } 
     } 
    }, 
    new SalesOrder() 
    { 
     OrderDate = DateTime.Now, 
     OrderDetails = new List<SalesOrderDetail>() 
     { 
      new SalesOrderDetail() { ItemId = 1 }, 
      new SalesOrderDetail() { ItemId = 2 } 
     } 
    } 
}; 

_context.SalesOrders.AddRange(salesOrders); 
_context.SaveChanges(); 

예, 탐색 속성이 없습니다 데이터를 검색 할 때 Include를 사용할 때만 유용하지만 저장을 훨씬 쉽게 할 수 있습니다!

+0

니스! 나는 그것을 직접 시도 할 것이지만, 나는 데이터베이스를 먼저 만들어야했다. 이것은 알아두면 좋습니다. – DWright