당신은 할 수 없습니다 - Ayende's blog discussing <map>
나는 여전히 <지도 />이 는 (더 많은 옵션입니다 IDictionary <, 비록 K에 대한 모든 옵션을 포함하지 않았 음을 지적하고 싶습니다에서 할 , IList < V >>는 매핑이 가능한 이 아니며 그렇게해야하는 문제가있는 SQL 문에 해당합니다.
일부 중간 엔터티/구성 요소가 필요합니다. 아마도 ProjectAssignment 엔티티가 사용자, 프로젝트 및 역할 간의 네이티브 연결을 끊을 것입니다. 시간이 지남에 따라 추가 속성을 늘릴 것입니다 (시간이 지남에 따라 할당에 대한 변경 내용을 추적하므로 StartDate
및 EndDate
이됩니다). 속성). 같은
뭔가 :
public class User {
// ... other attributes etc.
public virtual ISet<ProjectAssignment> Assignments {get;set;}
}
public class Project {
// ... other attributes etc.
public virtual ISet<ProjectAssignment> Assignments {get;set;}
}
public class Role {
// ... other attributes etc.
}
public class ProjectAssignment
{
public virtual Int64 {get;set;}
public virtual User User {get;set;}
public virtual Project Project {get;set;}
public virtual Role Role {get;set;}
// ... other attributes etc.
}
난 그냥 그 자체로 영속 클래스로 ProjectAssignment을지도하고 싶지만 정상 일대 어떤 맛으로 User.Assignments 컬렉션. (당신이 프레임 워크 V3.5을 사용하는 경우 또는 아마 iLookup으로) 마지막으로, 나는 사전에 세부 사항을 추출하는 방법을 추가 할 것입니다 : 모든 것입니다 어떻게에 대해 조금 혼란 스러워요
ILookup<Project, Role> GetRolesByProject() {
return Assignments.ToLookup(x => x.Project, x => x.Role);
}
: 같은 것을 적합하게. 중개자가 어떻게 보이는지, 그리고 어떻게 매핑 할 것인지 예를 들어 주시겠습니까? –
지금 제 답변을 연장했습니다. –
코드에 대해 고마워 :) 작동했습니다! –