WCF数据服务更新实体错误和表的主键类型

时间:2011-06-06 15:15:29

标签: sql-server wcf entity-framework wcf-data-services

在尝试使用WCF数据服务和实体框架更新表中的字段时,我无法找出错误原因:

MydbEntities context = new MydbEntities(new Uri("http://localhost:53051/Services/MydbService.svc"));
MyEntity entitytoedit = context.MyEntity.FirstOrDefault();
entitytoedit.Name = "TheNewName";
context.UpdateObject(entitytoedit);
context.BeginSaveChanges(OnChangesSaved, context);
...

错误如下: RequestException处理此请求时出错。

修复方法是添加一个自动增量decimal(18, 0)字段作为主要密钥IsIdentity = yes而不只是varchar(20)字段作为主键。

请问,任何人都可以解释问题的本质:我是否应该始终将自动增量主键与WCF数据服务一起使用?如果没有,实际上我错了吗?

1 个答案:

答案 0 :(得分:1)

我认为它比WCF数据服务更多的是实体框架问题。

您可以拥有手动设置的主键字段,并且必须将StoreGeneratedPattern设置为None

或者您可以使用AutoIncrement字段作为主键,在这种情况下,您必须将StoreGeneratedPattern设置为Identity

将其与案例混合总能打破局面。此外,当您执行模型优先时,默认情况下主键字段的类型为intStoreGeneratedPattern设置为Identity,因此只需将类型更改为decimal,就像您的情况一样还不够。