2009-12-07 52 views
0

我們試圖通過WCF更新實體,並且實體包含Timestamp列。當我們嘗試更新時,我們得到以下Data.Linq錯誤,「由數據庫計算或生成的成員無法更改。」此消息指的是Timestamp列。通過WCF使用時間戳列更新實體的問題

如果我們嘗試使用不使用WCF的相同更新,它可以正常工作。所以這個問題必須在WCF中。對於序列化,我們在Timestamp屬性上有適當的[DataMember]屬性。任何人都有任何想法可能是什麼問題?

感謝您的幫助。

蘭迪

回答

0

這個問題與WCF無關,真的。

它真的是SQL Server TIMESTAMP數據類型??

您無法更新這些 - SQL Server將自動更新這些字段,每當發生該行發生。

請參閱這裏「Timestamps vs. Datetime data types」或這裏「Misunderstanding timestamp」瞭解更多詳情。

在接收到WCF消息時,如何處理Linq-to-SQL數據的更新?你能告訴我們一些代碼嗎?

例如:該字段/屬性定義爲數據合同上的只讀屬性?任何人試圖更新該值真的沒有意義...。

另外,由於您通過WCF發送實體,因此這些實體將是Linq-to-SQL的「斷開」實體,例如,在任何時候都不在DataContext範圍內的實體。這可能會導致Linq-to-SQL想要爲數據庫的時間戳列添加一個新值的新實體。

+0

是的,它確實是一個Timestamp數據類型。我相信這是一個WCF問題,因爲在不使用WCF時更新可以正常工作。此外,L2S知道不會嘗試更新SQL Server中的此列,因爲它標記爲「自動生成的值」。 – 2009-12-07 17:17:17

+0

那麼,那麼你的代碼中的某些東西一定是錯的,它會試圖從你的WCF服務中更新L2S實體 - 你能告訴我們代碼嗎? – 2009-12-07 17:22:49