在我的数据库中,我有一个定义为唯一索引的列。我从数据库生成了我的 EF 模型(我不知道这种独特性是如何转化为模型的。我该如何检查这个?)。
当我尝试使用更新记录中的此字段时
entity.Users.ApplyCurrentValues(user);
我收到以下错误:
在 ObjectStateManager 中找不到具有与所提供对象的键匹配的键的对象。验证所提供对象的键值是否与必须应用更改的对象的键值匹配。
如何更新唯一(非主要!)字段?
在我的数据库中,我有一个定义为唯一索引的列。我从数据库生成了我的 EF 模型(我不知道这种独特性是如何转化为模型的。我该如何检查这个?)。
当我尝试使用更新记录中的此字段时
entity.Users.ApplyCurrentValues(user);
我收到以下错误:
在 ObjectStateManager 中找不到具有与所提供对象的键匹配的键的对象。验证所提供对象的键值是否与必须应用更改的对象的键值匹配。
如何更新唯一(非主要!)字段?
我们必须查看更多代码来确定您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
与检索到的对象一起使用。