无法使用Linq进行更新

时间:2015-02-05 17:30:42

标签: c# sql-server linq visual-studio-2013

try
{
    ContentDB contentDB = context.ContentDBs.FirstOrDefault(i => i.KeyID == KeyID);

    contentDB = contentDBUpdated;

    ChangeSet cs = context.GetChangeSet();
    Console.Write("Total changes to ContractorDB: {0}", cs);

    context.SubmitChanges();  
}
catch (Exception ex)
{
}  

我在这里做的是将所有新数据传递到名为contentDBUpdated的对象中,并设置所有参数。然后我将该对象设置为contentDB然后.SubmitChanges()

的上下文对象

一直告诉我

  

插入:0,删除:0,更新:0

我不明白为什么,因为当我在contentDB对象查看调试器时,它确实获得了新值。

1 个答案:

答案 0 :(得分:3)

您无法设置/更新对象,如:

contentDB = contentDBUpdated;

这只会复制引用,因此现在contentDB保留与contentDBUpdate相同的引用,并且附加到contentDB的原始上下文将丢失。

您可以设置以下属性:

contentDB.Name = contentDBUpdate.Name;
contentDB.SomeOtherProperty = contentDBUpdate.SomeOtherProperty;

然后更新将工作。