我正在使用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
改变类层次结构最终解决了这个问题。