Дочерние свойства не инициализируются автоматически с помощью RIA? - PullRequest
0 голосов
/ 02 февраля 2011

В рамках моего проекта я создал модель данных сущностей, дополненную связями между различными таблицами. При этом я замечаю, что Visual Studio автоматически создает свойство, названное по этой ссылке.

Затем я сгенерировал класс обслуживания домена на основе этой модели данных, и еще раз в нем генерируется свойство, представляющее ссылку, т.е. в моем классе ChemicalApplication есть свойство Chemical типа Chemical.

Проблема в том, что в клиенте Silverlight я не могу получить доступ к объекту данных ChemicalApplication и вижу свойство ChemicalApplication.Chemical, но как только я пытаюсь получить к нему доступ, я получаю сообщение об ошибке, что свойство инициализирован.

Эти автоматически сгенерированные дочерние свойства не инициализируются автоматически? Если нет, то как мне вручную присвоить им значение в доменной службе RIA?

1 Ответ

0 голосов
/ 28 февраля 2011

Мне удалось найти, как это сделать вручную.В методе RIA Dataservice Get () просто добавьте ".Include (" table_name ")"

Например, в моей функции GetChemicalApplicationByUser я связываюсь с двумя вложенными таблицами:

Public Function GetChemicalApplicationsByUser(ByVal query As String) As IQueryable(Of ChemicalApplication)
    Return Me.ObjectContext.ChemicalApplications.Include("Chemical") _
                                                .Include("ProcessStatus") _
                                                .Where(Function(f) f.requestedByUsername = query)
End Function

В метаданных класса, вам также нужно будет добавить Include (), то есть:

<MetadataTypeAttribute(GetType(ChemicalApplication.ChemicalApplicationMetadata))>  _
Partial Public Class ChemicalApplication


Friend NotInheritable Class ChemicalApplicationMetadata


    Private Sub New()
        MyBase.New
    End Sub

    Public Property aspectSummaryUpdate As Nullable(Of Boolean)

    Public Property bunding As Nullable(Of Boolean)

    Public Property CARQ() As Byte

    <Include()>
    Public Property Chemical As Chemical

etc...

Надеюсь, это поможет кому-то еще в будущем.

...