c#上下文当前没有跟踪该实体

今天在编码时碰到的小问题:利用上下文对象 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 ,感兴趣的自己弄去吧。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值