0

我正在尝试针对两个上下文运行查询,并且每次都会收到此错误:

无法创建“CC_Metrics_Apps.RefQutReturns”类型的常量值。此上下文仅支持原始类型(“例如 Int32、String 和 Guid”)。

我试图这样查询:

Public Function IDQ() As List(Of RefQutReturns)
  Dim val As List(Of RefQutReturns) = (From x In GlobalVar.db.RET.RefQutReturns
                                       Select x).ToList
  Return val
End Function

Public Function QueTypeDD() As IEnumerable(Of SelectListItem)
  Dim val As New List(Of SelectListItem)
  Dim valQ = From v In GlobalVar.db.PS.TaskQueueTypes
             Join x In IDQ() On v.QutID Equals x.QutID.ToString
             Select v
  val.Add(New SelectListItem With {.Text = "Select Item", .Value = 0})
  For Each v In valQ
    val.Add(New SelectListItem() With {.Text = v.QutDesc, .Value = v.QutID})
  Next
  Return val
End Function
4

1 回答 1

1

EF 不支持跨越多个上下文的查询。在大多数情况下,可能无法在一个数据库中创建和运行这样的查询,因为它必须访问不同的数据库(跟踪实体也可能会出现问题)。如果您有两个上下文但在一个数据库上工作,您可能希望合并上下文。否则,您需要将两种上下文的结果都提供给客户端,并使用 Linq To Objects 查询将它们组合起来。另请注意,在您的情况下,您将 Linq To Object 查询(因为.ToList()在 中IDQ())与 Linq To Entities 混合 - 这也不支持,因为 EF 不知道如何将物化的非原始结果带到查询所在的数据库被执行。

于 2013-10-29T13:30:17.970 回答