RIA服务中的自定义DomainDataSource / Table视图问题

时间:2012-06-07 11:37:33

标签: silverlight wcf-ria-services

我正在使用的项目基于标准的“Silverlight业务应用程序”。

我有许多表可以正常显示,但我希望显示基于其他表的SQL连接的复合表。所以,在我的Model.Designer.cs中,我有一个小的虚拟类:

        public class JoinClass
    {
        [Key]
        public string LanguagesName { get; set; }
        public string VersionsName { get; set; }
        public string StringsName { get; set; }
        public string TranslatedStringsValue { get; set; }
    }

然后,在我的DomainService.cs中,我创建了我的查询:

        public IQueryable<JoinClass> GetJoinClass()
    {
        IQueryable<JoinClass> query = from o in this.ObjectContext.TranslatedStrings
                                                                    where o.LanguagesID == 10
                                                                    select new JoinClass { LanguagesName = o.Languages.LanguagesName, VersionsName = o.Strings.Versions.VersionsName, StringsName = o.Strings.StringsName, TranslatedStringsValue = o.TranslatedStringsValue };

        return query;
    }

在Silverlight应用程序中,我通过DomainDataSource访问所有这些:

            <riaControls:DomainDataSource Name="joinClass" LoadSize="20" QueryName="GetJoinClass" AutoLoad="True">
            <riaControls:DomainDataSource.DomainContext>
                <ds:LanguageModelDomainContext />
            </riaControls:DomainDataSource.DomainContext>
            <riaControls:DomainDataSource.SortDescriptors>
                <riaControls:SortDescriptor PropertyPath="LanguagesName"></riaControls:SortDescriptor>
            </riaControls:DomainDataSource.SortDescriptors>
        </riaControls:DomainDataSource>

并在DataGrid中显示结果:

<sdk:DataGrid IsReadOnly="True" Name="translatedStringsDataGrid" ItemsSource="{Binding Data, ElementName=joinClass}"> 
没有火箭科学 - 问题是我只能在DataGrid中显示一条记录。查询GetJoinClass()似乎执行正常并返回近600条记录,但只有一条记录出现在DataGrid中。我使用的所有其他标准查询都没有这个问题。

任何指针都感激不尽!

1 个答案:

答案 0 :(得分:0)

回答 -

[Key]。该类的所有属性都应具有[Key]属性,而不仅仅是一个属性,例如

        public class JoinClass
    {
        [Key]
        public string LanguagesName { get; set; }
        [Key]
        public string VersionsName { get; set; }
        [Key]
        public string StringsName { get; set; }
        [Key]
        public string TranslatedStringsValue { get; set; }
    }

我不知道为什么。