来自Silverlight客户端中的实体的帮助程序属性,共享代码

时间:2011-12-14 17:08:03

标签: entity-framework mvvm ria domainservices

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

包含我的EDMX的命名空间“数据访问”,类Lib 名称空间“Web”Web应用程序托管silverlight应用程序以及通过EDMX投影的域服务(因此它引用了“数据访问”项目。) 名称空间“SLApp”,Silverlight应用程序

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

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类上创建Property,但似乎我必须多次复制该逻辑(任何我需要FullName属性的ViewModel)。我尝试在SL App中为Person对象创建一个名为FullName的扩展方法,但显然你无法绑定到扩展方法。

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

谢谢!

1 个答案:

答案 0 :(得分:0)

您是否在计算出的属性中添加了[DataMember]属性?

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