2011-02-27 3 views
0

이 질문은 실제로 이전 질문과 관련이 있습니다.Fluent NHibernate : 주어진 식별자가 두 개 이상의 행

나는 세 개의 필드로 구성된 합성 기본 키가있는 데이터베이스 테이블 TItemListUserPerm을 가졌다.

TItemListUserPerm

이지도하는 방법과 사투를 벌인 후
  • 사용자 아이디 (PK, FK)
  • TItemListID (PK, FK)
  • TItemListPermID (PK, FK)

, I 가장 단순한 것은 복합 기본 키를 제거하고, 고유 한 ID 기본 키를 추가하고, TItemListUserPerm을 매핑 할 수있는 엔티티로 만드는 것입니다.

결과였다

public class TaskItemListUserPermission { 
    public int Id { get; set; } 
    public User User { get; set; } 
    public TaskItemList TaskItemList { get; set; } 
    public TaskItemListPermission Permissions{ get; set; } 
} 

지도했다 :

public class TaskItemListUserPermissionMap : ClassMap<TaskItemListUserPermission> { 
    public TaskItemListUserPermissionMap() { 
    Table("TtemListUserPerm"); 
    Id(x => x.Id, "TaskItemListUserPermId"); 
    References(x => x.User, "UserId"); 
    References(x => x.Permissions, "TItemListPermID"); 
    References(x => x.TaskItemList, "TItemListID"); 
    } 
} 

public class TaskItemListMap : ClassMap<TaskItemList> { 
    Table("TItemList"); 
    Id(x => x.Id, "TItemListID"); 
    .... 
    HasMany<TaskItemListUserPermission>(x => x.UserPermssions) 
    .Table("TItemListUserPerm") 
    .KeyColumn("TItemListId") 
    .AsBag(); 
} 

모든 것이 잘 작동합니다. 나는 결과를 얻는다. 내가 원하는,하지만 뭔가 내가이 같은 LINQ 쿼리를 작성할 때까지 작업 할 수 있다고 생각하지 정확히 :

List<TaskItemList> taskItemLists = taskItemListRepository.GetAll() as List<TaskItemList>; 
    List<TaskItemListUserPermission> permissions = taskItemLists.First().TaskItemListUserPermission.ToList(); 

    var myName= permissions.Where<TaskItemListUserPermission>(x => x.User.FirstName == "FirstNameOfUser" && x.User.LastName == "LastNameOfUser"); 

나는 코드를 단계별로있어, 오류가 발생합니다 : 주어진 이상 한 행 식별자가 발견되었습니다 : IdOfUser, ClassNameOfObject.

나는 동일한 식별자를 가진 사용자 그룹을 얻고 있음을 알고 있습니다. 이들은 열거 가능 목록에있는 엔터티의 일부입니다. 누구든지 오류가 발생하는 이유와이를 해결하거나 해결하는 방법에 대해 알려주시겠습니까? Linq-To-NHibernate를 사용해야합니까?

+0

IdOfUser 및 ClassNameOfObject는 무엇입니까? –

+0

그건 그렇고 가능한 짧고 구체적으로 물어보십시오. 문제의 실제 원인을 찾아 질문하십시오. 사람들은 대개 몇 시간을 보내고 싶지 않습니다. –

+0

조언 해 주셔서 감사 드리며, 향후 질문을 위해 고려하겠습니다. 불행하게도 문제의 실제 출처가 무엇인지 전혀 알지 못했고 블로그 나 뉴스 그룹 등을 직접 조사하지 못했을 때만 질문을했습니다. 문제점의 원인을 찾아 낼 수 있었고 결국 해결책을 찾았습니다. – DerHaifisch

답변

0

이 문제는 궁극적으로 클래스, 특히 User 클래스의 불일치가되었습니다. 오류를받지 않을 때까지 클래스 맵에서 References를 주석 처리하여 소스를 좁혔습니다. 일단 그렇게하면 문제를 추론 할 수있었습니다. 나는이 질문을보고 그것에 대답하려고했던 누구에게나 감사한다.

관련 문제