2012-03-27 3 views
3

같은 관계의 다양성 등의 문제가 발생합니다.내가 같은 쿼리를 수행 할 때

하지만 수행 할 때

관계 다양성의 제약 조건 위반이 발생 같은

_domainContext.Users 
    .Where(u => u.Id == _userContext.User.Id) 
    .First() 
    .Houses 
    ... // more query stuff here 

오류가 발생 일 : 의 EntityReference 한 관련 개체를 초과 할 수 없습니다, 그러나 쿼리가 반환 하나 이상의 관련 개체.

여기에 더 많은 것들이 관련되어 있다고 생각합니다. 누군가가 그 둘의 차이점과 왜 문제를 일으키는 지 설명 할 수 있습니까?

답변

0

나는 100 % 확신 할 수는 없지만 문제가 무엇인지 알려주고 있습니다. 엔티티 매핑과 관련이있을 가능성이 큽니다 (이것은 EF 프로젝트라고 가정합니다). 실제로 첫 번째 쿼리에서 .Houses 속성에 액세스하려고하면 동일한 오류가 발생할 수 있습니다. 첫 번째 쿼리는 하우스를 실제로로드하지 않습니다 (SQL 추적을 실행하고 각 쿼리에서 호출 된 SQL을 확인하여 확인할 수 있음).

어딘가에 다음과 같은 코드가 있다고 추측하고 있습니까?

modelBuilder.Entity<User>() 
     .HasRequired(t => t.Houses) 
     .WithOptional()    
     .Map(c => c.MapKey("HouseId")); 

맞으면 .WithOptional()을 .WithMany()로 변경해야합니다. 이 매핑은 여기에서 발생하는 것처럼 보이는 일대 다 관계에 대비되지 않습니다. 이것이 올바르지 않다면 적어도 모델 매핑을 게시하고 잠재적으로 생성 된 SQL도 좋을 것입니다.

+0

나는이 대답에 동의하며, 관계의 왼쪽 또는 오른쪽에있는 1 대 1 관계에 하나 이상의 항목이 있는지 여부도 데이터베이스에서 확인합니다. 이것은 데이타베이스 부대가 하나의 항목 만 추가하기 때문에 이해가되지 않을 수도 있지만 어떻게 든 그것은 발생할 수 있습니다. – daryal

관련 문제