2010-04-02 82 views
0

有些情況下,我只想更新數據庫中單個實體的特定字段。使用ria-services從單個實體更新單個字段

我裝這種類型的實體到我的Silverlight應用程序, 我知道他們都在不斷變化的服務器上......但它 必須由Silverlight客戶端...服務器設置一個場只會讀它。 如何才能將該字段的新數據發送到服務器?

示例一個名爲「TextField」的實體。 我有一個加載在silverlight應用程序 中的TextField的列表,現在用戶將更新實體的預加載(字符串)屬性 並且必須返回到服務器而不更改服務器上的任何其他內容。

我試着給DomainService添加一個簡單的SetPreloadText(...)方法,但是這個 只是讓Silverlight崩潰了一些奇怪的錯誤代碼。

有沒有辦法呢?我在這裏反對Silverlight的想法嗎? 我真的不想發回整個對象,因爲知道在任何時候客戶端上的版本很可能會過時。 (這對於這個特定的應用程序是可以的)

回答

0

我覺得SetPreloadText(..)會因爲RIA服務使用特殊的命名規則,比如插入/更新/刪除crud,除非你指定它被命名爲不同。

如果你只想更新一個特定的屬性,因爲其他的我沒有改變。你應該看看你的更新方法中的

this.Context.AttachAsModified(currentEntityWithAllTextFields, this.ChangeSet.GetOriginal(currentEntityWithAllTextFields)); 

。有了這個,你可以準確地篩選出有什麼改變......

希望這有助於...

+0

AttachAsModified方法不可用...不在服務中,不在客戶端,任何想法? – TimothyP 2010-04-04 09:39:54

+0

您是使用SL3和RIA服務beta還是SL4和RIA服務RC?如果你使用的是RC,AttachAsModified已經被移動到了實體集,所以它會這樣.Context.TextFields.AttachAsModified – 2010-04-06 01:27:22

+0

SL4 RC,我會看看 – TimothyP 2010-04-07 10:43:53

0

現在,您需要使用:

this._yourENtitySet.Value.ApplyCurrentValues(modified); // The one you received 
    this._yourENtitySet.Value.ApplyOriginalValues(original); /// The original one 

希望這有助於!