2011-12-15 69 views
0

我想更新FormView中的記錄並使用ObjectDataSource,並因此而失去了我的一天來解決此錯誤。在ObjectStateManager中找不到與提供的對象的鍵匹配的鍵的對象

在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();   
} 
+2

`VAR obj`未使用;這是由設計? – dasblinkenlight 2011-12-15 14:43:07

回答

6

在你的方法:

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();   
} 

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(); 
} 
+0

感謝回覆。我如何附加物品? – 2011-12-15 14:49:23

相關問題