在我的数据库中,我将列定义为唯一索引。我从DB生成了我的EF模型(我不知道这个唯一性是如何转换为模型的。我如何检查这个?)。
当我尝试使用
entity.Users.ApplyCurrentValues(user);
我收到以下错误:
具有与所提供对象的键匹配的键的对象可以 在ObjectStateManager中找不到。验证密钥值 提供的对象匹配对象的键值 必须应用更改。
如何更新唯一(非主要!)字段?
答案 0 :(得分:0)
我们必须看到更多代码来确定您获取user
对象的位置,以便更清楚地了解正在发生的事情。
我相信ApplyCurrentValues
用于更新对ObjectContext
中已存在的对象所做的更改;如果您最初没有从上下文中获取user
实例,则会收到上述错误(错误告诉您它无法找到您尝试更新的对象)。
MSDN:Copies the scalar values from the supplied object into the object in the ObjectContext that has the same key.
如果您的Attach()
是分离的对象,或者您可以从此上下文中加载user
,然后使用user
,则可能ApplyCurrentValues
{{1}}与检索到的对象。