我正在使用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不能自动做我想做的,但让我知道,如果你有关于如何实现这一想法没有在两者之间创造” -目的”。