2012-06-07 2 views
0

엔티티 프레임 워크를 사용하고 이상한 문제가 발생했습니다. 데이터베이스에 콜렉션을 저장하려고합니다 (말 : 콜렉션). 이제이 컬렉션의 각 항목에는 하위 요소 컬렉션 (예 : 이벤트 컬렉션)이 있습니다. 이 같은 보일 것특정 주문의 엔티티 저장

: 그 위에 같이

Round 1 
    (No Child Elements) 
Round 2 
    Event 1 
    Event 2 
    Event 3 
Round 3 
    (No Child Elements) 
Round 4 
    Event 1 
    Event 2 

은 부모 객체는 항상 자식 컬렉션이 할 필요는 없다.

여기에 문제가 있습니다. 내 요구 사항은 컬렉션에 데이터를 추가 했으므로 데이터를 저장하려고한다는 것입니다. 그러나 EF를 저장하면 하위 컬렉션이있는 항목이 먼저 저장되므로 저장시 순서가 수정됩니다. 따라서 데이터베이스에서 2 번 라운드가 먼저 저장되고 나머지는 무작위로 저장됩니다.

EF가 원형 컬렉션을 내가 만든 순서대로 저장하도록 할 수있는 방법이 있습니까? 는 항상 1 라운드에서 시작하여 저장해야하고 라운드 4

고마워 절약로 끝나야합니다 :)

+0

AFAIK EF는 수집 요소가 삽입되는 순서를 보장하지 않습니다. 주문을 실제로 보장해야하는 경우 라운드 당 하나의 저장을 수행해야 할 수도 있습니다. 나는 틀릴 수도 있지만 그것이 내가 의심하는 바입니다. –

답변

4

어느 데이터베이스 또는 EF 보장 주문. 마찬가지로 데이터베이스를 쿼리하면 예상 한 순서대로 요소를 가져올 필요가 없습니다. 정확한 순서를 원하면 레코드의 순서 값을 유지하기 위해 열을 추가하고 데이터를 검색 할 때 OrderBy 확장 메서드를 사용해야합니다.

SaveChanges에 의해 실행 된 작업 순서는 EF를 완전히 제어합니다. 너는 그것을 바꿀 수 없다.

+0

EF 질문 Ladislav에 오니 기쁩니다. –

관련 문제