RIA覆盖客户端上的元数据

时间:2014-01-12 17:12:49

标签: silverlight metadata silverlight-5.0 wcf-ria-services ria

我在服务器端元数据类中有一个包含以下字段的实体:

Partial Friend Class CustomerMetadata
    <Required()> _
    <Display(Order:=1, Name:="First Name")> _
    Public Property FirstName As String

    <Required()> _
    <Display(Order:=2, Name:="Last Name")> _
    Public Property LastName As String

    <Required()> _
    <Display(Order:=3, Description:="Phone")> _
    Property DisplayPhone As String

    <Required()> _
    <Display(Order:=4, Name:="Email Address")> _
    Public Property EmailAddress As String
End Class

现在在客户端,我想交换数据网格中电话和电子邮件地址字段的显示顺序,因此我创建了一个新的客户端CustomerMetadata类,如下所示:

Partial Friend Class CustomerMetadata
    <Required()> _
    <Display(Order:=4, Description:="Phone")> _
    Property DisplayPhone As String

    <Required()> _
    <Display(Order:=3, Name:="Email Address")> _
    Public Property EmailAddress As String
End Class

客户端不会选择重写的显示顺序。关于如何覆盖客户端元数据类中的Display属性的任何想法?

1 个答案:

答案 0 :(得分:2)

无法覆盖您在服务器上设置的客户端中的元数据。

特别是,RIA Services的元数据类概念是服务器端概念 - 只有在使用Entity Framework和模型优先方法时才使用,您可以让设计人员创建实体类。您在服务器上的元数据类上放置的属性将在构建期间自动生成为客户端上实际实体的属性。

由于排序属性是我在使用自动生成的列时控制DataGrid排序的唯一方法,因此我只想到两种方法来规避问题:

  1. 明确指定网格中的列(最后,由于种种原因,您可能不得不这样做,实际上自动生成的列很少就足够了)或
  2. 在客户端和服务器实体中使用相同的顺序。
  3. (为了完成起见,我应该提一下,您也可以使用自动生成RIA服务客户端代码的方式,但这对您遇到的问题不合适。)