我正在使用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不能自動做我想做的,但讓我知道,如果你有關於如何實現這一想法沒有在兩者之間創造」 -目的」。