【发布时间】:2011-04-02 03:59:41
【问题描述】:
我一直在遵循从 Microsoft 创建您的第一个 WCF RIA 服务应用程序的演练,并在尝试使用数据上下文的 SubmitChanges() 方法编辑和更新数据时遇到了问题。
正在更新的表在 SQL Server 2008 中的“CourseID”列上设置了标识规范。但是,PRIMARY 键是其他两个字段的组合。
当使用 SubmitChanges() 时,应用程序在浏览器中被锁定并呈现一个未处理的异常。通过处理此异常,我设法得到消息:不支持使用“身份”模式修改列。这是指“CourseID”列。
关闭身份规范可以解决问题,但我需要自动递增 ID。以什么方式不支持。或者我哪里错了?
【问题讨论】:
-
这应该可以工作(虽然我只在 EF 中完成,而不是 RIA 服务),但请确保在 EDMX 中为 CourseID 正确设置了
StoreGeneratedPattern。 -
我在想为什么你会有这样的结构。如果您有一个应该作为您的 PK 的代理键,那么其他两个应该有一个唯一索引是的,但是出于性能原因以及在信息更改时更新信息的困难,复合键对于 PK 来说是一个非常糟糕的选择。
-
@HLGEM 我昨天下班后不久就得出了这个结论。数据库结构是这里的问题。感谢您加强这一想法。我会关闭这个问题。
-
我们也遇到了这个问题。我认为 EF 没有理由不支持这一点。我们在 Identity 字段上有一个聚集索引来减少/防止表/索引碎片。 EF 当然应该支持不是 PK 的身份字段。
标签: entity-framework sql-server-2008 wcf-ria-services