这个错误对我来说毫无意义。我已经在这里和其他地方阅读了各种答案-没有任何内容对我有用。
导航属性'Invoice.LineItems'的声明类型与指定导航的结果不兼容
我有两个表:Invoices
和LineItems
。
最简单的形式如下:
发票
发票ID
LineItems
发票ID
名称
数量
和实体:
Public Class Invoice
<Key>
Public Property InvoiceID As Int64
Public Overridable Property LineItems As List(Of LineItem) = New List(Of LineItem)
End Class
Public Class LineItem
<Key>
Public Property InvoiceID As Int64
Public Property Name As String
Public Property QTY As Int32 = 0
End Class
当尝试使用关联的LineItem提取发票时,出现上述错误。
Using database As PosDatabase = New PosDatabase
Dim invoices As List(Of Invoice) = database.Invoices _
.Include("LineItems") _
.ToList()
End Using
这是EF 6.2.0
在解决问题方面的任何帮助将不胜感激。
答案 0 :(得分:2)
该异常是由于模型映射不正确引起的。
InvoiceID
的FK LineItem
属性被标记为PK,因此有效地使关系1变为0..1,即更改了{{1}所表示的关系的预期多重性}集合导航属性从LineItems
到Many
。
我想这只是一个映射错误,One
的实际PK应该有所不同-像LineItem
这样的自己的身份列或LineItemID
上的复合PK。
因此,只需映射(InvoiceID, Name)
的正确PK(带有数据注释或流利的API),即可解决问题。在我的测试中,我做到了
LineItem