首页 新闻 搜索 专区 学院

有关EF更新数据库问题

0
悬赏园豆:10 [已解决问题] 解决于 2016-03-21 09:25

先上图:

上面是报的错:

我这个项目用的是上下文实例唯一,

当我要编辑更新时,提示如上异常

下面是我编辑写的代码:

public int Edit(int id,T entity)
{
//T tt=db.Set<T>().Find(id);

db.Entry(entity).State = EntityState.Modified;
return db.SaveChanges(); //运行时,这句是不执行的,然后就报错了
}

我想知道如何根据查询到的实体更新实体呢?

或者有什么其他解决办法么? 请大侠积极吐槽啊~  拜谢!~

问题补充:

shuai7boy的主页 shuai7boy | 菜鸟二级 | 园豆:215
提问于:2016-03-15 23:44
< >
分享
最佳答案
0

楼上说的都不对.原因是.他先从ef里把这个ID的实体查询出来了.这时ef追踪里已经有了这个ID对应的实体对象.

他又new了一个新的对象给这个对象的id赋值相同的值.然后想把这个新对象也添加到实体追踪里.这时候ef实体追踪就有2个相同id的对象.所以抛这个异常.正经的做法是所有要修改的对象都要从ef里读出来再赋值.不要去添加追踪.不然就会有这问题.所以说院子里那些ef教程.很多这种误人子弟的.

收获园豆:10
吴瑞祥 | 高人七级 |园豆:28831 | 2016-03-16 09:57

你是对的。

Me_Code | 园豆:52 (初学一级) | 2016-03-16 16:57
其他回答(3)
0

主键重复了,看下数据库

唯我独萌 | 园豆:532 (小虾三级) | 2016-03-16 08:18
0

你给错代码了吧,报错的Edit 是没有参数 int id 的

Yu | 园豆:12944 (专家六级) | 2016-03-16 08:39
0

你修改的是主键吧?

刘宏玺 | 园豆:14006 (专家六级) | 2016-03-16 09:37
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册