1

Entity Framework 4.1을 사용하여 MVC3 웹 응용 프로그램을 만들고 있습니다. 문제는 순환 참조가 있고 예외가 발생한다는 것입니다. 나는 왜 그것이 잘못되었으므로 DELETE/UPDATE CASCADE를 다 대 다 관계에서 제거하고 싶습니다. 문제는 그걸하는 법을 모른다는 것입니다 ... 그건 내 문제에 대한 설명이 될 것입니다. 여기에 내 모델 간다 :Entity Framework 4.1에서 CASCADE없이 다 대다 관계를 만드는 방법은 무엇입니까?

질문 -> -.
              |                             |
              |                             |
           /| \                           |
    필드                     |
              |                             |
              |                             |
           /| \                           |
  답변 ----- '

모든 질문에는 여러 개의 입력란이 있으며 모든 입력란에 여러 개의 답변이 있습니다. 질문이나 답변을 삭제할 때 해당 답변을 삭제하고 싶습니다. 나는 여기서 추가적인 일을 할 필요가 없다고 생각한다. 그러나 각 대답에는 여러 종속 질문이있을 수 있습니다. 모든 질문은 여러 답변에 따라 달라질 수 있습니다. 이 관계는 예를 들어 다른 질문에 대한 대답이 예일 경우에만 질문을 표시하는 데 사용됩니다 ... 이제 응답을 제거하면 종속 된 모든 질문을 제거하지 않고 종속성 만 제거합니다.

' VB 
Public Overridable Property AnswerDependencies As List(Of QuestionAnswer) 

// C# 
public virtual List <QuestionAnswer> AnswerDependencies { get; set; } 

및 QuestionAnswer 객체가 있습니다 : 내 모델 질문 객체에서

가 가지고있는 다음과 같은 속성이 있습니다 내의 DataContext 클래스에서 OnModelCreating 이벤트에 예상되는 동작을 정의하는 방법

' VB 
Public Overridable Property DependentQuestions As List(Of Question) 

// C# 
public virtual List <Question> DependentQuestions { get; set; } 

:

Public Property Questions As DbSet(Of Question) 
Public Property QuestionFields As DbSet(Of QuestionField) 
Public Property QuestionAnswers As DbSet(Of QuestionAnswer) 

EDIT

문제점에 대한 해결책을 찾았습니다. 나는 수동처럼 보이는, QuestionAnswerDependency 객체를 생성 :

Public Class QuestionAnswerDependency 
    Inherits ModelBase 

    Public Property QuestionId As Integer? 
    Public Overridable Property Question As Question 

    Public Property AnswerId As Integer 
    Public Overridable Property Answer As QuestionAnswer 

    Sub New(ByRef q As Question, ByRef a As QuestionAnswer) 
     Me.New() 
     Me.Question = q 
     Me.Answer = a 
    End Sub 

    Sub New() 

    End Sub 

End Class 

나는 아무 CASCADE ON DELETE 결과와 순환 참조를 해결 QuestionId 속성 Null을 허용했다. 이제 질문 및 QuestionAnswer 객체는 QuestionAnswerDependency 객체의 목록이 : 나는 EF가 자동으로 내가 원하는 것을 할 수 없다고 생각

Public Overridable Property QuestionAnswerDependencies As List(Of QuestionAnswerDependency) 

,하지만 당신은에서 사이 "작성하지 않고 그것을 달성하는 방법에 대한 아이디어가 있으면 알려 주시기 -목적".

답변