2013-05-05 101 views
1

假設我有如下表:獲取插入後產生的ID

public class SomeItem 
{ 
    public int Id { get; set; } 

    [DataMember(Name = "text")] 
    public string Text { get; set; } 
} 

我可以輕鬆地做這樣的事情:

var items = await MobileService.GetTable<SomeItem>.Where(x=>x.Id > 50).ToListAsync(); 
//print items here 

,但我一直沒能找到一種方式來獲得插入後生成的項目。例如,我可能需要SomeItem的Id。這是想我能夠做到:

var item = await MobileService.GetTable<SomeItem>.Insert(new SomeItem{Text="hi"}).Result; 
+1

爲什麼不只是'var newItem = new SomeItem {Text =「hi」}'然後插入'newItem'?然後你有'newItem'在那裏! – 2013-05-05 09:36:20

+0

@MthetheWWatson將使用數據庫自​​動創建的Id(key)填充newItem? – snotyak 2013-05-05 09:39:03

+0

不,不會 - 我以爲你自己設定了身份證,但當然,我可以看到你不是。 – 2013-05-05 10:06:59

回答

2

您只需創建要單獨插入,讓你有一個參考它,你可以在插入後使用的項目:

var newItem = new SomeItem{Text="hi"}; 
await MobileService.GetTable<SomeItem>.Insert(newItem); // Or whatever syntax you need here! 
// Now you can use newItem after it's been inserted (and the 'Id' key has been updated by the insert) 
+0

謝謝。我真的很驚訝,當這個工作... – snotyak 2013-05-05 10:44:35

+0

(不要告訴任何人......但我也是;) – 2013-05-05 10:45:45

0

(當前)測試版客戶端SDK中存在突破性更改。查看詳情這個帖子:

http://blogs.msdn.com/b/carlosfigueira/archive/2013/03/14/azure-mobile-services-managed-client-upcoming-breaking-changes.aspx

在你的答案提供的代碼,因爲「SomeItem」是一個已知的數據類型,我覺得行爲將保持不變並且對象將在修補地點。如果您使用的是未鍵入的數據(JSON),則該對象將不會打補丁。你必須依賴返回的對象來檢查id的值。卡洛斯在上面的帖子中更詳細地解釋了這一點。

Nate