2012-11-09 1 views
0

linq 또는 .Find 명령으로 데이터베이스 객체를로드하면 호출에 포함 된 하위 모음도 자동으로 항목을 추가합니다. changetracker를 저장하고 저장하십시오 :새 엔티티에서 ICollection을 초기화하여 항목이 자동으로 변경 추적 프로그램에 추가되도록

entity.Children.Add(entityChild); 

이렇게하면 첨부 된 엔티티의 변경 추적기에 잘 추가됩니다.

그러나 새 엔티티를 만들고 생성자에서 ICollection을 새로운 HashSet()으로 설정하면 Children.Add (entityChild) 행을 수행 할 때 변경 추적기에 추가되지 않습니다.

새 개체에 ICollection을 초기화하면 하위에 추가하면 변경 추적기에 추가됩니다.

부모를 추가 한 경우 변경 추적기에 새로 추가 된 모든 자식을 추가해야한다고 생각했습니다 (즉, 부모를 만들고 자식을 추가 한 다음 부모를 DbSet에 추가하여 자식을 변경에 추가해야 함). 추적기가 너무 맞습니까?)

고마워요!

답변

1

변경 내용 추적을 사용하는 엔터티 형식의 새 인스턴스를 만들려면 DbSet에서 Create method을 사용해야합니다.

DetectChanges methodDbContext.ChangeTracker으로 호출하여 수동으로 변경 감지를 시작할 수도 있습니다.

마지막으로 POCO 클래스에 많은 코드를 추가하려면 self-tracking entities template에 의해 생성 된 코드를 살펴볼 수 있습니다. 이것은 실제로 데이터베이스를 쿼리 할 때 반환되는 개체에 대해 EF에서 사용하는 코드와 동일합니다.

+0

그 문제는 알고 있어야 할 필요가있는 DbContext에서만 그렇게 할 수 있으며 모든 생성자 등을 위해 전달된다는 것입니다 (지금까지 내가 말할 수있는 한). 이들을 설정할 방법이 없는가? 그것없이 객체의 생성자에서? –

+0

@ user1515307 조사하고 싶은 다른 접근 방식으로 내 대답을 업데이트했습니다. – bricelam

+0

추가 정보를 제공해 주셔서 감사합니다. 나는 꽤 솔직한 해결책을 원했으나 카드에없는 것 같아요. 오 잘. –