我使用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类与db中的表格进行1:1映射。
DbContext只为Holder类创建一个dbSet。
Public Property Holder As DbSet(Of Holder)
当我创建一个简单的查询来访问db中holder表的数据时,我得到了change_type,change_date和process_date的列错误。
Using contextdb = New userContext()
Dim att1 = (From b In contextdb.Holder
Select b).Take(10)
End Using
该查询似乎认为我试图在子表中查询子类&#39;信息。
为什么LINQ会从父类中请求孩子们的列&#39;数据库中的表?我是否需要做一些事情来指定我只想检索持有人信息?
答案 0 :(得分:0)
当一个类从另一个类继承时,实体框架显然会创建一个层次结构。因此,当我查询持有者记录时,它正在持有者表中查找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
更改类层次结构最终解决了问题。