首页 新闻 会员 周边

EntityFramework 如何更新 detached 实体

1
悬赏园豆:20 [已解决问题] 解决于 2011-09-04 11:00

如题,EntityFramework 如何更新 detached 实体,如下代码不能更新:

Product p = null;
using (EFDbContext context = new EFDbContext()) {
p
= context.Products.First();
}
using (EFDbContext context = new EFDbContext()) {
p.Remark
= "aaa";
context.SaveChanges();
//不能更新
}
dotnet4的主页 dotnet4 | 初学一级 | 园豆:16
提问于:2011-08-23 22:19
< >
分享
最佳答案
1

可如下更新 Detached 状态的实体:

using (EFDbContext context = new EFDbContext()) {
p.Remark
= string.Format("更新时间 {0:F}", DateTime.Now);
context.Entry(p).State
= EntityState.Modified;
context.SaveChanges();

}
收获园豆:18
鹤冲天 | 老鸟四级 |园豆:2379 | 2011-09-03 15:22

太简单了

ChatinCode | 园豆:2272 (老鸟四级) | 2012-04-17 15:59
其他回答(2)
-1

你的两个context是同一个吗?都是new出来的,根本就不是同一个。

收获园豆:2
顾晓北 | 园豆:10844 (专家六级) | 2011-08-24 09:08
当然不是一个了,这种情况如何更新?
主要是在Web下,第一次请求获取到对象并修改,点击保存按钮后保存对象,也就第二次请求。
两次请求时间可能很长,不能(也不想)保持一个EFDbContext。
支持(0) 反对(0) dotnet4 | 园豆:16 (初学一级) | 2011-08-24 11:27
我晕,不是同一个你更新哪一个?
Product p = null;using (EFDbContext context = new EFDbContext()) {
p = context.Products.First(); p.Remark = "aaa"; context.SaveChanges(); }
你这样不能更新?为啥要new两次呢?
支持(0) 反对(0) 顾晓北 | 园豆:10844 (专家六级) | 2011-08-24 13:34
0

这个还要考虑实体是不是 代理对象,如果不是还要处理一下。

rainrcn | 园豆:113 (初学一级) | 2012-12-30 22:08
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册