"无效的ChangeSet:每个条目的ID必须是唯一的"使用Ria Services SOAP端点从客户端插入记录时出错

时间:2014-06-23 11:00:34

标签: c# wcf ria

我有一个使用Ria Services的Silverlight应用程序。我现在希望运行一个不同的客户端应用程序(控制台应用程序),它将在服务器上执行某些计划的日终操作。为了做到这一点并避免重复我决定使用SOAP herehere将Ria Services DomainContext公开为Web服务,以便我可以重用Ria中设置的实体和关系服务无需在我的客户端复制。

在我的客户端中,我已成功添加了服务引用,并且我已成功查询Web服务以获取结果。我也能够执行"插入"单个新数据库条目的语句。不幸的是,当我向我的条目集添加多个项目以进行更新时,我得到一个错误" Invalid ChangeSet:对于每个条目,ID必须是唯一的"。

以下是我的代码:

DomainServiceSoapClient service = new DomainServiceSoapClient();
List<DomainServices.ChangeSetEntry> changesToSave = new List<DomainServices.ChangeSetEntry>();
foreach (string name in myListOfNames)
{
    Person newPerson = new Person() {Name = name};
    DomainServices.ChangeSetEntry entry = new DomainServices.ChangeSetEntry { Entity = newPerson, Operation = DomainServices.DomainOperation.Insert };
    changesToSave.Add(entry);
}
service.SubmitChanges(changesToSave.ToArray<DomainServices.ChangeSetEntry>());

错误发生在代码的最后一行。 作为测试,如果我用以下行替换最后一行(这意味着我在提交的数组中只有一个条目)它可以工作,我不会收到错误。

service.SubmitChanges(new DomainServices.ChangeSetEntry[] {changesToSave.ToArray<DomainServices.ChangeSetEntry>()[0]});

我如何解决此问题,以便在我希望提交多个条目时SubmitChanges正常工作?

1 个答案:

答案 0 :(得分:0)

你必须使用喜欢,我认为Person就是你的桌子。

DomainServiceSoapClient service = new DomainServiceSoapClient();
     foreach (string name in myListOfNames)
    {
        Person newPerson = new Person() {Name = name};
        service.Person.Add(newPerson);

    }
service.SubmitChanges();