Ну, мне удалось стать немного ближе. Добавление ключа к свойству Id возвращаемого объекта, по крайней мере, позволило ему успешно скомпилироваться, однако, используя fiddler, чтобы увидеть результаты, я вижу, что в объекте ничего нет. Я предполагаю, что это какая-то проблема с сериализацией на данный момент.
Я сконструировал свой возвращаемый объект (dto) из копии другого класса сущностей, сгенерированного из моей модели, чтобы убедиться, что я ничего не пропустил. Затем я прокомментировал все отслеживание изменений, чтобы убедиться, что оно не вызывает никаких проблем. Вот класс:
<DataContract(IsReference:=True)> _
<KnownType(GetType(ValueList1Item))> _
<KnownType(GetType(ValueList2Item))> _
Partial Public Class ValueLists
#Region "Primitive Properties"
<DataMember()> _
<Key()> _
Public Property Id() As Long
Get
Return _id
End Get
Set(ByVal value As Long)
If Not Equals(_id, value) Then
_id = value
End If
End Set
End Property
Private _id As Long
<DataMember()> _
Public Property ValueList1() As List(Of ValueList1Item)
Get
Return _valueList1
End Get
Set(ByVal value As List(Of ValueList1Item))
If Not Equals(_valueList1, value) Then
_valueList1 = value
End If
End Set
End Property
Private _valueList1 As List(Of ValueList1Item)
<DataMember()> _
Public Property ValueList2() As List(Of ValueList2Item)
Get
Return _valueList2
End Get
Set(ByVal value As List(Of ValueList2Item))
If Not Equals(_valueList2, value) Then
_valueList2 = value
End If
End Set
End Property
Private _valueList2 As List(Of ValueList2Item)
#End Region
End Class
И метод, который я использую для создания и возврата объекта, выглядит следующим образом ...
Public Function GetValueLists() As ValueLists
Dim ret As ValueLists = New ValueLists
ret.Id = RandomNumber(1, 100000000)
ret.ValueList1 = (From vli1 In ObjectContext.ValueList1Items
Select vli1).ToList()
ret.ValueList2 = (From vli2 In ObjectContext.ValueList2Items
Select vli2).ToList()
Return ret
End Function
Трассировка этого метода показывает, что он действительно работает нормально Я вижу, что все элементы списка значений заполнены правильно, он просто никогда не покидает сервер. Это наводит меня на мысль, что на данный момент это какая-то проблема сериализации.