实体框架 - 返回列表错误?

时间:2014-03-10 03:06:28

标签: vb.net entity-framework

我从return to list得到了问题 - entity framework。我需要作为一个对象返回。这是我的代码:

Public Function GetHardwareDetail() As List(Of HardwareDetailApp)
        Dim idList As New List(Of String)
        Dim Data = (From p In DB.TT_HARDWARE Select New HardwareDetailApp With {.InternalNum = p.INTERNAL_NUM, .Description = p.DESCRIPTION, .TerminalModel = p.HARDWARE_MODEL, .HardwareInternalNum = p.HARDWARE_ID, .Status = p.ISACTIVE, .Firmware = Nothing, .SerialNum = Nothing})

       If Data.Count > 0 Then
            For Each row In Data
                idList.Add(row.InternalNum)
            Next
       End If

       Dim Data2 = (From p In DB.TT_TERMINAL_HARDWARE Where idList.Contains(p.HARDWARE_INTERNAL_NUM)
              Select New HardwareDetailApp With
              {.Firmware = p.HARDWARE_FIRMWARE, .SerialNum = p.HARDWARE_SERIAL_NUM, .InternalNum = Data.FirstOrDefault.InternalNum, .Description = Data.FirstOrDefault.Description, .TerminalModel = Data.FirstOrDefault.TerminalModel, .HardwareInternalNum = Data.FirstOrDefault.HardwareInternalNum, .Status = Data.FirstOrDefault.Status})

       Return Data2.ToList
End Function

这是我得到的错误:

  

“HardwareDetailApp”类型显示为两个   单个LINQ中的结构不兼容的初始化   实体查询。一个类型可以在同一个地方初始化   查询,但仅当在两个地方都设置了相同的属性时   这些属性的设置顺序相同。

1 个答案:

答案 0 :(得分:0)

在您的代码中,您已在两个位置从HardwareDetailApp创建,在每次创建时,您必须使用相同的顺序设置相同的属性。

例如,如果在linq to entity Select中,您可以使用以下内容:

Place1:

...
Select new MyClass()
{
    PropA: 1,
}
...

并且在该查询中,您需要来自Select的其他MyClass,但需要其他一些属性,例如PropB,赞:

Place2:

...
Select new MyClass()
{
    PropB: 2,
}
...

您必须将Select中的所有MyClass更改为相同的内容,并将您不需要的属性设置为默认值,并按相同的顺序设置属性,如:

Place1:

...
Select new MyClass()
{
    PropA: 1,
    PropB: default(int),
}
...

Place2:

...
Select new MyClass()
{
    PropA: default(int),
    PropB: 2,
}
...

我的代码在c# ..

在代码的这一部分中Dim Data = (From p In DB.TT_HARDW ....尝试首先设置Firmware and SerialNum,就像第二个select一样,(我没有仔细检查其他属性)