无效的变更集:每个条目的Id必须是唯一的.使用Ria Services SOAP端点从客户端插入记录时出现错误

本文关键字:端点 SOAP Services Ria 客户端 记录 错误 使用 插入 无效 Id | 更新日期: 2023-09-27 18:09:48

我有一个使用Ria服务的Silverlight应用程序。现在我希望运行一个不同的客户机应用程序(控制台应用程序),它将在服务器上执行某些预定的日结束操作。为了做到这一点并避免重复,我决定使用这里和这里描述的SOAP将Ria Services DomainContext作为Web服务公开,这样我就可以重用Ria Services中设置的实体和关系,而不必在我的客户端中复制它。

在我的客户端中,我已经成功地添加了服务引用,并且我能够成功地查询Web服务以获得结果。我还能够为单个新的数据库条目执行"insert"语句。不幸的是,当我向条目集添加多个条目以进行更新时,我得到一个错误"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工作?

无效的变更集:每个条目的Id必须是唯一的.使用Ria Services SOAP端点从客户端插入记录时出现错误

你必须使用like,我假设Person是你的表

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