更新实体时出现问题
|
更新应用程序中的实体(用户)时遇到问题。
登录用户后,该实体位于会话中。所以我做到了:
Dim u as User = (From x in ctx.Users).First()
Session(\"user\") = u
好的,没问题。
但是当我需要更改用户时:
Dim u as User = Ctype(Session(\"User\"),User)
u.name = \"new name\"
ctx.Users.ApplyCurrentValues(u)
我收到以下错误:
键与
提供的对象的密钥无法
在ObjectStateManager中找到。
验证
提供的对象与键值匹配
必须更改的对象
应用。
没有找到相关结果
已邀请:
2 个回复
峨躬坎抬焚
ApplyCurrentValues仅从传递的对象中获取值,并将它们复制到必须加载并附加到上下文的相同对象类型。 @Mlantosca显示的第二个示例无法正常工作,因为您将实体存储在会话中,并且没有分离它。要使其正常工作,您必须使用:
惜堡沁戚
这是我在EF中更新现有实体时使用的样式 -迈克尔