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

回答

相关问题