我们正在尝试通过WCF更新实体,并且实体包含Timestamp列。当我们尝试更新时,我们得到以下Data.Linq错误,“无法更改由数据库计算或生成的成员”。此消息引用了Timestamp列。
如果我们尝试使用不同的WCF进行相同的更新,它可以正常工作。所以问题必须与WCF有关。我们在Timestamp属性上有适当的[DataMember]属性进行序列化。任何人都知道问题可能是什么?
感谢您的帮助。
兰迪
答案 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列新值的新实体....