WCF服务会抱怨标记为rowversion的列

时间:2009-11-11 22:04:31

标签: .net linq wcf silverlight linq-to-sql

我目前正在玩Silverlight3,C#和LinqToSQL。 我在SQLExpress服务器上构建了一个数据库,例如:

员工(Id,Name,DepartmentId,TimeStamp) 部门(Id,Name,TimeStamp)

Id字段是VarChar(50),名称字段是VarChar(100),TimeStamp字段是timestamp类型。

在我的Silverlight解决方案中,我有两个项目: 服务器端一,包括表示数据库的LinqToSQL模型和WCFService,包括通过linq查询查询对象的方法,这使得第二个项目可以访问数据。 第二个项目是一个简单的Silverlight应用程序,它应该从服务中获取结果并在页面上显示它们。

对于某些对象,这些查询是可以的,其他查询会出现操作异常(在查询被解除之前),其中说明如下: 元素“Byte [] TimeStamp”和“System.String Id”都标记为rowversion。

我已经仔细检查了所有内容,甚至从设计器中删除了这些表并再次添加它们但没有运气,我不断收到这些错误。这些表几乎完全相同,但不知何故,这个错误只会抛出其中一些,而其他的则很好。 TimeStamp列的类型为Byte [],而Id列的类型为LinqToSQL模型中的System.String。但只有TimeStamp被标记为时间戳,并且对于其服务器数据类型被声明为rowversion NOT NULL。另一方面,Id列没有设置任何值,这会让我猜到为什么抛出有关此rowversion冲突的错误。 有什么可能导致这种冲突的建议吗?

1 个答案:

答案 0 :(得分:1)

使用texteditor打开.dbml文件并删除有问题的Id节点中的所有IsVersion =“true”属性解决了这个问题。 即使在设计器中启用和解除这些属性后,Visual Studio 2008 DBML设计器也未将这些属性显示为已启用。