1

我正在使用Entity Framework 4.1製作MVC3網絡應用程序。問題是我有一個循環引用,我得到一個異常。我明白爲什麼它是錯誤的,所以我想從我的多對多關係中刪除ON DELETE/UPDATE CASCADE。問題是,我不知道該怎麼做... 這將是它的描述我的問題。這裏是我的模型:如何在Entity Framework 4.1中創建沒有CASCADE的多對多關係?

問題 - > - 。
              |                             |
              |                             |
           /| \                           |
   場                    |
              |                             |
              |                             |
           /| \                           |
 答案-----'

每個問題有多個領域,每個領域有多個答案。當我刪除問題或答案時,我想刪除相應的答案。我認爲這裏不需要做額外的工作。但是,每個答案都可能有多個相關問題(每個問題都可能取決於許多答案)。這種關係僅用於在其他問題的答案爲YES的情況下顯示問題... 現在,如果我刪除答案,我不想刪除所有依賴於它的問題,只刪除依賴項。

在我的模型問題對象有:

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

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

和問題答案對象有:

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

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

如何定義在具有以下屬性我DataContext類中OnModelCreating事件預期的行爲:

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

編輯

我找到了我的問題的解決方案!我手動創建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 

我製成QuestionId屬性可爲空的,這導致不CASCADE ON DELETE並解決週期性參考。現在的問題和問題答案對象具有QuestionAnswerDependency對象的列表:

Public Overridable Property QuestionAnswerDependencies As List(Of QuestionAnswerDependency) 

我覺得EF不能自動做我想做的,但讓我知道,如果你有關於如何實現這一想法沒有在兩者之間創造」 -目的」。

回答

相關問題