如何检索指向孩子的父母的ID?

时间:2015-01-12 16:27:40

标签: sql asp.net-mvc vb.net razor ef-code-first

VS2013,代码首先是EF6,SQL数据库,VB

我定义了以下类:

Public Class Question
  Public Property QuestionID As Integer
  Public Property Text As String
  Public Property Type As qType
  Public Property PossibleAnswers As New List(Of qAnswer)
End Class

Public Class qAnswer
  Public Property qAnswerID As Integer
  Public Property Text As String
End Class

当我查看在SQL服务器中创建的qAnswer数据表时,我看到:

enter image description here

为了做一些简单的事情,如显示所有答案的列表及其父问题,我需要检索显然在表格中的值,但我不了解如何编码。因为它在技术上不属于班级的财产,所以我不能直接要求它。如何检索该值?

我想知道检索的方式是否在源代码(包括VB)和视图代码中都有效,这意味着Razor。

1 个答案:

答案 0 :(得分:0)

由于您在qAnswer上为Question创建了导航属性,因此实体框架在Question上创建了一个隐含的外键,用于存储关系qAnswer。这会导致您在数据库表中看到Question_QuestionID属性。但是,由于这是一个隐式属性,因此无法在代码中直接访问其值。您有两种选择,您可能希望实际执行这两种选择。

  1. 将引用属性添加到qAnswer。如果您实际上并不真正关心相关的问题ID,而只是希望能够自己解决问题,那么您可以通过引用属性来实现。只需将以下内容添加到qAnswer

    即可
    Public Property Question As Question
    
  2. 如果你想要id本身,那么你需要一个属性来qAnswer来存储它。类似的东西:

    Public Property QuestionID As Integer
    

    按照惯例,实体框架会将此识别为关系的外键属性并相应地使用它。添加此属性后,您需要运行迁移才能使其生效。