关于ApplyPropertyChanges的问题

天边一坨浮云 技术中心总经理  2010-11-25 10:57:57
ObjectStateManager 不包含具有对“xxx”类型的对象的引用的 ObjectStateEntry。
这个问题遇到过很多次,对于MVC模式,我一般都是在控制器里new一个对象,用GetEntityById方法给这个对象赋值,然后通过参数传递到仓储模型(后台是EDM方式)里进行保存操作
具体方法

virtual public int SaveModify(T entity)
{
Db.ApplyPropertyChanges(entity.GetType().Name, entity);
return Db.SaveChanges();
}



今天不知道什么原因,还是报ObjectStateManager 不包含具有对“xxx”类型的对象的引用的 ObjectStateEntry。这个错
我在服务层再new一个对象对其赋值再执行SaveModify方法,这样可以解决
但是比较疑惑为什么会造成这个问题
求达人解惑
...全文
128 点赞 收藏 5
写回复
5 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
claymore1114 2010-11-27
可能是 Db 数据源不同,
你在 方法里 把 这个类型再 找出来,再...
Db....Where( );
Db.ApplyPropertyChanges(entity.GetType().Name, entity);
回复
昨天看了一下,你的意思是要有这种实体
Department o1 = db.Department.First(p => p.Id == dept.Id);

但是我的方法参数是 T entity
该类是
public class Repository<T> : IRepository<T> where T : EntityObject, IEntity, IValid, IEntityWithKey, new()
{
}


好像没办法写成你说的这样
回复
兔子党-督察 2010-11-25
virtual public int SaveModify(T entity)
{
//此处在ApplyPropertyChanges前要先获取对象实体
Db.ApplyPropertyChanges(entity.GetType().Name, entity);
return Db.SaveChanges();
}
看看这个:
http://blog.csdn.net/tintown/archive/2009/09/29/4677841.aspx
回复
发动态
发帖子
LINQ
创建于2007-12-13

8492

社区成员

.NET技术 LINQ
申请成为版主
社区公告
暂无公告