我正在使用 VS 2010 和 Silverlight 4 和 WCF RIA v1
当我尝试在域服务中使用命名更新方法时,我遇到了一个奇怪的错误。
这是错误:
“消息:Silverlight 应用程序中的未处理错误 *提交操作失败。值不能为空。 *参数名称:System.ServiceModel.DomainServices.EntityFramework.ObjectContextExtensions 的原始名称。”
域服务中发生错误 this.ObjectContext.Prospects.AttachAsModified(p, this.ChangeSet.GetOriginal(p));
我已经阅读了 WCF 的更改文档,并且我认为我做的一切都是正确的。
有人可以帮我弄清楚发生了什么吗?
干杯
这是代码解释:
客户
......
<riaControls:DomainDataSource.DomainContext>
<my:MarketingDomainContext />
</riaControls:DomainDataSource.DomainContext>
......
<Grid x:Name="LayoutRoot" Background="White">
<Grid DataContext="{Binding ElementName=comboBoxProspects, Path=SelectedItem}"
Name="gdProspects" Margin="10">
…………………………………………………………………………………………
我从网格中获取 Prospects 实体。
我尝试使用全局声明的上下文和更新方法 int Entity 来调用命名的更新方法。
public partial class MainPage : UserControl
{
MarketingDomainContext ctx;
private void dsProspects_LoadedData(object sender, LoadedDataEventArgs e)
{
ctx = (MarketingDomainContext)dsProspects.DomainContext;
}
private void btnSubmit2_Click(object sender, RoutedEventArgs e)
{
//((Prospect)gdProspects.DataContext).CalculateProspectValue(
// int.Parse(tbNumber1.Text), int.Parse(tbNumber2.Text));
var tempProsp = gdProspects.DataContext as Prospect;
ctx.CalculateProspectValue(tempProsp, int.Parse(tbNumber1.Text),
int.Parse(tbNumber2.Text));
ctx.SubmitChanges();
}
域服务方法
[Update(UsingCustomMethod=true)]
public void CalculateProspectValue(Prospect p, int a, int b)
{
p.Comments = "Value = " + a * b;
// Error happens here
this.ObjectContext.Prospects.AttachAsModified(p, this.ChangeSet.GetOriginal(p));
}
public void UpdateProspect(Prospect currentProspect)
{
this.ObjectContext.Prospects.AttachAsModified(currentProspect, this.ChangeSet.GetOriginal(currentProspect));
}