Muh*_*ran 0 c# entity-framework-4
我想更新记录FormView,ObjectDataSource并失去我的一天来解决这个错误.
在ObjectStateManager中找不到具有与提供的对象的键匹配的键的对象.验证提供的对象的键值是否与必须应用更改的对象的键值匹配.
我的代码如下
private static Entities1 _db = null;
public static Entities1 CreateDataContext()
{
if (_db == null)
{
_db = new Entities1(System.Configuration.ConfigurationManager.ConnectionStrings["Entities1"].ConnectionString);
_db.games.MergeOption = MergeOption.NoTracking;
_db.my_aspnet_users.MergeOption = MergeOption.NoTracking;
_db.platforms.MergeOption = MergeOption.NoTracking;
}
return _db;
}
public void Update(game item)
{
Entities1 DB = CreateDataContext();
item.modified = DateTime.Now;
var obj = (from u in DB.games
where u.idgames == item.idgames
select u).First();
DB.games.ApplyCurrentValues(item);//Error Here
DB.SaveChanges();
}
Run Code Online (Sandbox Code Playgroud)
在你的方法中:
public void Update(game item)
{
Entities1 DB = CreateDataContext();
item.modified = DateTime.Now;
var obj = (from u in DB.games
where u.idgames == item.idgames
select u).First();
DB.games.ApplyCurrentValues(item);//Error Here
DB.SaveChanges();
}
Run Code Online (Sandbox Code Playgroud)
item未附加,因此无法更新.这也是错误消息告诉你的内容.
看起来您想要使用obj从您的上下文中检索的内容.然后设置的值,obj在那些item和使用obj做出更新.
编辑样本 ......
如果您只想设置修改日期和时间,请执行以下操作:
public void Update(game item) {
Entities1 DB = CreateDataContext();
var obj = (from u in DB.games
where u.idgames == item.idgames
select u).SingleOrDefault();
if (obj == null) {
// handle the case where obj isn't found
// probably by throwing an exception
}
obj.modified = DateTime.Now;
DB.games.ApplyCurrentValues(obj);
DB.SaveChanges();
}
Run Code Online (Sandbox Code Playgroud)