2014-06-23 57 views
1

我有一個使用Ria Services的Silverlight應用程序。我現在希望運行一個不同的客戶端應用程序(控制檯應用程序),它將在服務器上執行某些預定的日期結束操作。爲了做到這一點並避免重複,我決定使用SOAP描述Ria Services DomainContext作爲Web服務,如herehere所述,以便我可以重新使用Ria Services中設置的實體和關係,而不必將其複製到我的客戶。使用Ria服務SOAP端點從客戶端插入記錄時出現「無效ChangeSet:每個條目必須唯一」錯誤

在我的客戶端中,我成功添加了服務引用,並且我成功地能夠查詢Web服務以獲取結果。我也能夠爲單個新數據庫條目執行「插入」語句。不幸的是,當我將一個以上的項目添加到要更新的條目集時,我收到一條錯誤「無效的ChangeSet:每個條目必須是唯一的」。

下面是我的代碼:

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在需要提交多個條目時有效?

+0

你的桌子上有主鍵嗎? –

+0

是的,我願意。整個Silverlight應用程序運行良好,Ria Services的所有功能都來自Silverlight。只有從域服務Soap客戶端纔會發生此錯誤。 – Stanley

+0

誰可以低估我的問題,請給出一個指示,說明爲什麼他們低估了這個問題,讓我有機會糾正錯誤,並且/或提供更多信息使問題變得可接受?如果它只是表現爲一個downvoted問題,我冒着沒有人看這個問題的風險,我真的需要一些輸入... – Stanley

回答

0

你必須使用像,我假設人是你的表。

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

    } 
service.SubmitChanges(); 
+0

不,這是不正確的。這就是人們在Silverlight中的Ria Servics DomainContext對象上執行插入和SubmitChanges操作的方式。我沒有在這裏使用DomainContext,我正在使用域服務(請參閱我在問題中提到的鏈接)。 DomainService類不公開一個「添加」方法,因此插入語句必須在我的問題中的鏈接中工作。 (不幸的是,這些鏈接並沒有顯示出一組更改可以有多個條目的例子。) – Stanley