LINQ 父类在 db 中查询子类中的字段



我正在使用EF 6.1.3和.NET Framework 4.5.2

我正在更新使用两个类的代码:

Public Class Holder
    <Key(), Column(Order:=0)>
    Property Holder_No As Integer?
    <Key(), Column(Order:=1)>
    Property Title_No As Integer?
    Property Family_Name As String
    Property Given_Name_1 As String
    Property Given_Name_2 As String
End Class
Public Class OwnerChange
    Inherits Holder
    Public Property Change_Type As String
    Public Property Change_Date As Date
    Public Property Process_Date As Date?
End Class

Holder 类是 1:1 映射,在数据库中有一个表。

DbContext 仅为 Holder 类创建一个 dbSet。

Public Property Holder As DbSet(Of Holder)

当我创建一个简单的查询来访问数据库中的持有者表中的数据时,我得到change_type、change_date和process_date的列错误。

Using contextdb = New userContext()
     Dim att1 = (From b In contextdb.Holder
                             Select b).Take(10)
End Using

查询似乎认为我正在尝试查询父表以获取子类的信息。

为什么 LINQ 从数据库中父类的表中请求子类的列? 我是否需要执行某些操作来指定我只想检索持有人信息?

实体框架显然会在一个类从另一个类继承时创建一个层次结构。 因此,当我查询持有者记录时,它正在持有者表中查找 OwnerChange 类中的元素。

我需要做的是获取 holder 类并将其转换为抽象类,然后将其继承到我想访问数据库中不同表的两个类中。

Public MustInherit Class base_class
<Key(), Column(Order:=0)>
Property Holder_No As Integer?
<Key(), Column(Order:=1)>
Property Title_No As Integer?
Property Family_Name As String
Property Given_Name_1 As String
Property Given_Name_2 As String
End Class
Public Class OwnerChange
    Inherits base_class
    Public Property Change_Type As String
    Public Property Change_Date As Date
    Public Property Process_Date As Date?
End Class
Public Class holder
    Inherits base_class
End Class

改变类层次结构最终解决了这个问题。

最新更新