通过WCF使用时间戳列更新实体的问题

时间:2009-12-07 17:03:49

标签: wcf linq-to-sql

我们正在尝试通过WCF更新实体,并且实体包含Timestamp列。当我们尝试更新时,我们得到以下Data.Linq错误,“无法更改由数据库计算或生成的成员”。此消息引用了Timestamp列。

如果我们尝试使用不同的WCF进行相同的更新,它可以正常工作。所以问题必须与WCF有关。我们在Timestamp属性上有适当的[DataMember]属性进行序列化。任何人都知道问题可能是什么?

感谢您的帮助。

兰迪

1 个答案:

答案 0 :(得分: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想要为数据库添加一个带有timestamp列新值的新实体....