this one 및 기타 관련 질문을 확인했지만 제 사례의 해결 방법을 찾을 수 없습니다.복수 선택형 일대일 릴레이션 중 어느 하나가 필요합니다.
그래서 세 개의 엔티티, PrintingMethod
, PrintingSubMethod
및 PrintPricing
이 있습니다. 규칙은 다음과 같습니다.
PrintingMethod
은PrintingSubMethod
입니다. >> 아무 문제 없어.PrintingMethod
은이고 0 또는 하나PrintPricing
일 수 있습니다.- 각
PrintingSubMethod
은 하나는PrintPricing
이어야합니다. - 각
PrintPricing
는가 중 하나PrintingMethod
또는PrintingSubMethod
와 연결해야합니다.
여기서 처음 두 기관의 :
Public Class PrintingMethod
Public Property Id As Integer
Public Property Name As String
Public Property SupportsAdditionalColors As Boolean
Public Overridable Property SubMethods As ICollection(Of PrintingSubMethod)
Public Overridable Property AdditionalColorPricing As PrintPricing
End Class
Public Class PrintingSubMethod
Public Property Id As Integer
Public Property Name As String
Public Property PrintingMethodId As Integer
<ForeignKey("PrintingMethodId")>
Public Overridable Property ParentMethod As PrintingMethod
Public Overridable Property Pricing As PrintPricing
End Class
그리고 여기에 세 번째의 그림입니다 :
Public Class PrintPricing
Public Property Id As Integer
<ForeignKey("LinkedSubMethod")>
Public Property SubMethodId As Integer
<ForeignKey("LinkedMethod")>
Public Property MethodId As Integer
Public Overridable Property LinkedSubMethod As PrintingMethodCode
Public Overridable Property LinkedMethod As PrintingMethod
End Class
그래서,이 DataAnnotations이나 유창함 API를 사용하여 달성 할 수있다? 그렇지 않다면 대안을 제안하십시오.
주 :
- 무관 필드와 DataAnnotations은 간결함을 제거했다.
- 저는 Entity Framework 6.0을 사용하고 있습니다.
- 내 코드는 VB이지만 모든 C# 응답도 환영합니다.
그래프에 대해 정확하며 다른 레이어에서 해당 규칙을 적용해도 아무런 문제가 없습니다. 그래도 제안 된 솔루션을 구현하는 방법을 아직 모르겠습니다. EF에 실제로 익숙하지 않기 때문에 가능하면 DataAnnotations를 사용하여 * 이것을 구현하는 방법을 자세히 설명하면 좋을 것입니다. 고맙습니다. –
내가 신경 쓰는 부분은 동일한 테이블에 두 개의 0-1 관계를 만드는 방법입니다. DataAnnotations *를 사용하는 방법은 대상 테이블의'FK'를'PK'로 만드는 것입니다. –
@AhmedAbdelhameed 몇 가지 코드를 추가했습니다. 핵심은 외래 키를 주 엔드가 아닌 종속 엔드에 추가하는 것입니다. 나는 그것을 실행하려고하지 않았기 때문에 자유롭게 편집 해보세요 :) – gldraphael