2012-08-31 2 views
1

방금 ​​LINQ to SQL을 사용하여 프로젝트를 시작했는데 many- to-many 문제와 충돌했습니다. 가능한 해결책을 많이 찾았으며 this one을 선택했습니다.LINQ to SQL 속성과의 다 대다 관계 - C#

어쨌든, 영향을받는 DB 테이블은 다음과 같이 :

고객 C :

Customer (idcustomer,other stuff..) 
Customer_Role(idcustomer, idrole, other_attribute_I_want_to_keep) 
Role(idrole, other stuff) 

지금에 어떻게가 "other_attribute_I_want_to_keep 그것은 다음과 같이 그것을 가지고 좋은 것를 처리 할 수 ​​있습니다. Role.other_attribute_I_want_to_keep은,하지만 난 가능한 해결책을 발견 할 수 없다.

감사

답변

2

당신은 사용할 수 없습니다 대다 이것 때문에. 오히려 고객과 역할 모두 BelongsTo 인 첫 번째 클래스 객체 인 CustomerRole을 만들어야합니다. Customer 및 Role은 각각 CustomerRole에 대해 HasOne 속성을 선언해야합니다. 그럼 당신은 할 수 있습니다 :

c.CustomerRole.Role 
c.CustomerRole.OtherAttribute 

당신은 정의 Customer에 바로 가기 Role 속성을 만들 수 있습니다

[NotMapped] 
public Role Role { 
    get { return CustomerRole == null ? (Role)null : CustomerRole.Role; } 
    set { if (CustomerRole == null) 
      CustomerRole = new CustomerRole(){ Role = value }; 
      else 
      CustomerRole.Role = value; 
    } 
} 

을하지만 복잡한 쿼리를 만들 때이 바로 가기를 사용하여 문제로 실행할 수 있음을주의해야합니다.

+0

다른 방법이 없다면 해결책이 될 것입니다. 그렇지 않으면 "CustomerRole"을 IEnumerable 대신 Dictionary 로 만들 수 있습니까? – ArtoAle

+0

나는 그런 사전을 어떻게 쓸지 모르겠다. 정교 할 수 있니? – PinnyM

+0

죄송합니다.하지만 CustomerRole 속성은 어떻게 가능합니까? 내 말은, 그것 컬렉션, 그래서 그것은 CustomerRoleS, 그리고 난 당신이 정의한 바로 가기 특성을 어떻게 정의했는지 이해할 수 없다는 뜻이다. – ArtoAle