我有下表,其中 StationAvailableMoves.StationID 和 StationAvailableMoves.AvailableNextStationID 都与 Station.ID 列有关系。
我正在使用它来控制从车站对象到车站对象的过程,其中车站上可以有多条路线。
然后,当我将这些表导入实体框架模型时,我得到以下循环引用表。
然后我试图在下面的 DTO 中加载数据
Imports System.Runtime.Serialization
Namespace Models
<DataContract()>
Public Class Stations
<DataMember()>
Public Property ID As Int32
<DataMember()>
Public Property Name As String
<DataMember()>
Public Property BullName As String
<DataMember()>
Public Property StationMoves As IList(Of Stations)
End Class
End Namespace
虽然我可以使用以下 LINQ 查询将数据加载到基元类型中,但我不确定如何加载调用中即将到来的子对象。
Using db As New StockTrackingEntities
Dim var = (From s In db.Stations.Where(Function(w) w.BUID.Equals(buID))
Select New Stations With {.ID = s.ID,
.Name = s.Name,
.BullName = s.BullName}).ToList
End Using
我可以在单个 LINQ 语句中执行此操作,还是需要对集合进行 For Each 并手动加载它?
编辑:
我尝试了以下语句(可能是垃圾),并且在编译时会生成运行时异常
Dim var = (From s In db.Stations.Where(Function(w) w.BUID.Equals(buID))
Select New Stations With {.ID = s.ID,
.Name = s.Name,
.BullName = s.BullName,
.StationMoves = From m In s.Station1
Select New Stations With {.ID = m.ID,
.Name = m.Name,
.BullName = m.BullName}}).ToList
例外
从上述查询中删除 ToList 以防止异常它实际评估它的打击对象。