【问题标题】:Helper properties from Entities in Silverlight client, shared codeSilverlight 客户端中实体的帮助程序属性,共享代码
【发布时间】:2025-12-06 10:30:01
【问题描述】:

我试图弄清楚如何为给定的实体类型创建在 Silverlight 客户端中公开的附加“计算”属性。我的解决方案结构如下(简体):

命名空间“数据访问”,类库,保存我的 EDMX 托管 silverlight 应用程序的命名空间“Web”Web 应用程序以及在 EDMX 上投影的域服务(因此它引用了“数据访问”项目。) 命名空间“SLApp”,Silverlight 应用程序

我的一个实体是人(非常简化):

public partial class Person
{
   public string FirstName {get; set;}
   public string LastName {get; set;}
}

我想要一个名为 FullName 的“帮助”/“计算”属性,它只是将名字和姓氏放在一起。在过去,这很容易;创建我自己的公共部分类 Person 类并添加属性/逻辑,然后我可以将它用作普通属性。但是 RIA 域服务似乎没有公开该属性,所以我不能在客户端上使用它。如果 EDMX 在 Web 应用程序中,我可以使用 .Shared.cs 文件并将其包含在 SL 应用程序中(我猜),但我不希望我的 EDMX 在 Web 应用程序中(感觉很脏:))

我正在使用 MVVM 模式,因此我可以在 ViewModel 类上创建属性,但似乎我必须多次复制该逻辑(我需要 FullName 属性的任何 ViewModel)。我尝试在 SL 应用程序中为 Person 对象创建一个名为 FullName 的扩展方法,但显然您无法绑定到扩展方法。

我是 Silverlight 的新手,这是我的第一个“真正”应用程序,所以也许我只是遗漏了一些非常简单的东西......我希望我是。任何帮助都会很棒。

谢谢!

【问题讨论】:

    标签: entity-framework mvvm ria domainservices


    【解决方案1】:

    您是否已将[DataMember] 属性添加到您的计算属性?

    [DataMember]
    public string FullName
    {
        get { return string.Format("{0} (1)", this.FirstName, this.LastName); }
    }
    

    【讨论】: