错误:声明的导航属性类型与结果不兼容

时间:2019-02-23 03:00:06

标签: entity-framework

这个错误对我来说毫无意义。我已经在这里和其他地方阅读了各种答案-没有任何内容对我有用。

  

导航属性'Invoice.LineItems'的声明类型与指定导航的结果不兼容

我有两个表:InvoicesLineItems。 最简单的形式如下:

发票
发票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

在解决问题方面的任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:2)

该异常是由于模型映射不正确引起的。

InvoiceID的FK LineItem属性被标记为PK,因此有效地使关系1变为0..1,即更改了{{1}所表示的关系的预期多重性}集合导航属性从LineItemsMany

我想这只是一个映射错误,One的实际PK应该有所不同-像LineItem这样的自己的身份列或LineItemID上的复合PK。

因此,只需映射(InvoiceID, Name)的正确PK(带有数据注释或流利的API),即可解决问题。在我的测试中,我做到了

LineItem