Silverlight 4.0 WCF RIA服务-使用命名更新时出错

Silverlight 4.0 WCF RIA服务-使用命名更新时出错,silverlight-4.0,ria,wcf-ria-services,Silverlight 4.0,Ria,Wcf Ria Services,我构建了一个非常简单的Silverlight RIA解决方案,服务器端使用EF4。我向DomainService添加了一个命名的更新方法,但无法使用它。问题在于ChangeSet.GetOriginal()。它返回空值: [EnableClientAccess()] 公共类学生域名服务:LinqToEntitiesDomainService { [更新(使用CustomMethod=true)] 公共方法(学生成绩、分数a、分数b) { stud.FirstName=(a*b).ToString

我构建了一个非常简单的Silverlight RIA解决方案,服务器端使用EF4。我向DomainService添加了一个命名的更新方法,但无法使用它。问题在于ChangeSet.GetOriginal()。它返回空值:

[EnableClientAccess()]
公共类学生域名服务:LinqToEntitiesDomainService
{
[更新(使用CustomMethod=true)]
公共方法(学生成绩、分数a、分数b)
{
stud.FirstName=(a*b).ToString();
var original=this.ChangeSet.GetOriginal(螺柱);
//原件无效;
this.ObjectContext.StudentSet.AttachAsModified(stud,original);//引发异常
}
.
.
.
}
这是xaml代码背后的代码:

public部分类主页面:UserControl
{
学生主题文本ctx;
学生螺柱;
公共主页()
{            
初始化组件();
ctx=新学生DomainContext();
}
私有无效按钮点击(对象发送者,路由目标)
{
加载(ctx.GetStudentSetQuery()).Completed+=neweventhandler(MainPage_Completed);
}
无效主页_已完成(对象发送方,事件参数e)
{                     
var lo=(发送器作为加载操作);
stud=lo.Entities.First();
}
私有无效按钮更改\单击(对象发送者,路由目标)
{
stud.MyMethod(3,6);
ctx.SubmitChanges();
}
}

需要注意的是,当我通过自动生成的CRUD使用一个简单的更新时,一切都正常。

您的问题的简单答案是,您没有更改silverlight应用程序上的实体,因此无法将任何内容发送到服务器,这就是为什么您无法获得最初的建议

1.首先,我建议您使用Ria域服务中的标准更新功能,它类似于以下功能。然后在客户端,您可以自由更改实体的值,在您的情况下,您可以在silverlight部件上更改学生的名称。然后将所有更改一起提交到服务器

public void UpdateAddress(Address currentAddress)
        {
            this.DbContext.Addresses.AttachAsModified(currentAddress, this.ChangeSet.GetOriginal(currentAddress), this.DbContext);
        }
2.更新操作在最新版本中已过时,已替换为EntityAction。
3.如果您真的想使用自定义方法,可以尝试使用RoundtripOriginalAttribute,使用此属性注释所有要发送回服务器的属性。

问题的简单答案是,您没有更改silverlight应用程序上的实体,因此无法将任何内容发送到服务器,这就是为什么你不能得到原来的一些建议

1.首先,我建议您使用Ria域服务中的标准更新功能,它类似于以下功能。然后在客户端,您可以自由更改实体的值,在您的情况下,您可以在silverlight部件上更改学生的名称。然后将所有更改一起提交到服务器

public void UpdateAddress(Address currentAddress)
        {
            this.DbContext.Addresses.AttachAsModified(currentAddress, this.ChangeSet.GetOriginal(currentAddress), this.DbContext);
        }
2.更新操作在最新版本中已过时,已替换为EntityAction。 3.如果您确实想使用自定义方法,可以尝试使用RoundtripOriginalAttribute,使用此属性注释所有要发送回服务器的属性