在尝试使用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数据服务一起使用?如果没有,实际上我错了吗?
答案 0 :(得分:1)
我认为它比WCF数据服务更多的是实体框架问题。
您可以拥有手动设置的主键字段,并且必须将StoreGeneratedPattern
设置为None
。
或者您可以使用AutoIncrement
字段作为主键,在这种情况下,您必须将StoreGeneratedPattern
设置为Identity
。
将其与案例混合总能打破局面。此外,当您执行模型优先时,默认情况下主键字段的类型为int
,StoreGeneratedPattern
设置为Identity
,因此只需将类型更改为decimal
,就像您的情况一样还不够。