首页 新闻 会员 周边

linq to entities 取得一条记录后并修改,无法进行添加操作。

0
悬赏园豆:30 [已关闭问题]

由于需要在更新一条记录之前,取得原记录并修改日期添加回数据库(相当于备份)

取得原来的记录

objPrice = _DbHouse.Price
                .Where(p => p.AutoId == 1)
                .FirstOrDefault();

修改一下日期

objPrice .PostDate = DateTime.Now;

添加(相当于备份) 但是这里出现问题了

ObjectStateManager 中已存在具有同一键的对象。现有对象处于 Modified 状态。只有在该对象处于 added 状态后,才能再次将它添加到 ObjectStateManager 中。

请问怎么解决?是否要创建多一个实体,除<实体键>外的值都赋值到新的实体,然后添加?但是我的实体类有很多属性… 是否还有其他办法?

_DbHouse.AddToPrice(objPrice);

继续修改 objPrice 其他属性值, 保存更新.

_DbHouse.SaveChanges();

问题补充: EntityKey 是只读的,无法更改。 我现在的做法是新建多一个实体类,除实体键外全部赋值,然后进行AddToxxx操作。
takwai的主页 takwai | 菜鸟二级 | 园豆:357
提问于:2008-09-24 11:58
< >
分享
其他回答(2)
0

不用AddTo直接修改后保存即可

重典 | 园豆:2442 (老鸟四级) | 2008-09-24 12:49
0

要改的话得把你设置的主键给修改掉才行啊,相应EntityKey也要改了,这样才不会造成冲突

Gray Zhang | 园豆:17610 (专家六级) | 2008-09-24 13:22
0

备份的数据还是原来的表?你重新建个表结构好了

zjy | 园豆:3194 (老鸟四级) | 2008-09-24 15:31
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册