使用RIA自动初始化子属性?

时间:2011-02-02 14:34:20

标签: asp.net vb.net silverlight ria

在我的项目中,我创建了一个实体数据模型,其中包含各个表之间的关系链接。我注意到,当我这样做时,Visual Studio会自动创建一个以此链接命名的属性。

然后,我根据此数据模型生成了一个域服务类,并再次生成一个表示链接的属性,即在我的ChemicalApplication类中,有一个化学类型的化学属性。

问题是,在silverlight客户端中,我可以访问ChemicalApplication数据对象,并且可以看到ChemicalApplication.Chemical属性,但是当我尝试访问它时,我收到一个错误,该属性不是初始化。

这些自动生成的子属性是否不会自动初始化?如果没有,我如何在RIA域服务中手动为它们分配值?

1 个答案:

答案 0 :(得分:0)

我设法找到了如何手动执行此操作。在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...

希望将来能帮助别人。