今天在编码时碰到的小问题:利用上下文对象 context 在进行删除或者更新时总是报这个错误。弄了半天才发现自己在更新和删除时没有首先先取值,直接进行了更新。
public void Update(AzureOrderEn en)
{
var context = new AzureHelper().getContext();
context.UpdateObject(azureOrdEn);
context.SaveChanges();
}
出错的代码如上。其实提示说的很明确,在该上下文里根本不存在该对象,更新什么东西?你应该首先把该对象加载出来,改变对象数值,然后再UpdateObject该对象。
public void Update(AzureOrderEn en)
{
var context = new AzureHelper().getContext();
var query = context.CreateQuery<AzureOrderEn>("AzureOrder").Where(c => c.RowKey == en.RowKey).ToList();
AzureOrderEn azureOrdEn = query.FirstOrDefault();
azureOrdEn.amount = en.amount;
context.UpdateObject(azureOrdEn);
context.SaveChanges();
}
这样问题就解决了,删除数据也是一样的。先在上下文里把该对象加载出来,再context.DeleteObject(azureOrdEn);最后save。这样每次相当于要读写连接两次数据库,效率不高,好像有更好的办法,可惜我看不懂。。我是菜狗也不大懂。什么Attach ,感兴趣的自己弄去吧。。