2014-07-27 4 views
0

엔티티 프레임 워크 6을 사용하여 데이터 액세스 레이어를 작성 중입니다. DbContext에서 SaveChanges() 메소드를 호출하면 엔티티가 다음과 같은 관련 엔티티 세트와 함께 저장됩니다. 탐색 속성. 다음은 내가하려고하는 간단한 코드입니다.엔티티 프레임 워크를 사용하여 엔티티 그래프 저장하기

public class Customer 
{ 
    public long ID { get; set; } 
    public string Name { get; set; } 

    public virtual IEnumberable<PhoneNumber> { get; set; } 
} 

public class PhoneNumber 
{ 
    public long ID { get; set; } 
    public string Number { get; set; } 
}  

public class SampleContext : DbContext 
{ 
    public virtual DbSet<Customer> Customers { get; set; } 
    public virtual DbSet<PhoneNumber> PhoneNumbers { get; set; } 
} 

using(var context = new SampleContext()) 
{ 
    var customer = new Customer { ID = 1, Name = "John" }; 
    customer.PhoneNumbers = new PhoneNumbers[] 
    { 
      new PhoneNumber { ID = 1, Number = "1.111.1111111" }, 
      new PhoneNumber { ID = 2, Number = "1.111.1111112" } 
    } 
    context.Customers.Add(customer); 
    context.SaveChanges(); 
} 

위의 코드는 고객 테이블에 고객을 저장하지만 PhoneNumbers 테이블에는 아무 것도 저장하지 않습니다.

+0

http://stackoverflow.com/questions/20098287/save-detached-object-graph-using-entity-framework-code-first-causes-primary-key – Yanshof

+0

@Yanshof, 블로그는 뭔가 다른데, 네비게이션 속성의 개념은 완전히 그 블로그에서 엉망이되었습니다. –

답변

0

이상하지만 해결책을 찾았습니다. 위의 코드는 작동시키기 위해 약간의 수정이 필요합니다. 다음은 수정됩니다

//In Customer class, changed following line: 
public virtual IEnumberable<PhoneNumber> { get; set; } 

//To: 
public virtual ICollection<PhoneNumber> { get; set; } 

//Then in using block initialized entities as follows: 
using(var context = new SampleContext()) 
{ 
     var customer = new Customer { ID = 1, Name = "John", PhoneNumbers = new List<PhoneNumber>() }; 
     customer.PhoneNumbers.Add(new PhoneNumber { ID = 1, Number = "1.111.1111111" }); 
     context.Customers.Add(customer); 
     context.SaveChanges(); 
} 
관련 문제