이 질문은 실제로 이전 질문과 관련이 있습니다.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를 사용해야합니까?
IdOfUser 및 ClassNameOfObject는 무엇입니까? –
그건 그렇고 가능한 짧고 구체적으로 물어보십시오. 문제의 실제 원인을 찾아 질문하십시오. 사람들은 대개 몇 시간을 보내고 싶지 않습니다. –
조언 해 주셔서 감사 드리며, 향후 질문을 위해 고려하겠습니다. 불행하게도 문제의 실제 출처가 무엇인지 전혀 알지 못했고 블로그 나 뉴스 그룹 등을 직접 조사하지 못했을 때만 질문을했습니다. 문제점의 원인을 찾아 낼 수 있었고 결국 해결책을 찾았습니다. – DerHaifisch