读书人

怎么在Entity Framework里进行对象传递

发布时间: 2012-02-02 23:57:14 作者: rapoo

如何在Entity Framework里进行对象传递更新。
//这个方法是把一个对象实例从外部传入进来,进行更新。
public string UpdateDepartment(Department dept)
{
using (var db = new FlexDbEntities())
{
db.ApplyPropertyChanges("Department",dept);
}
}


//外部调用
Department de = Department.CreateDepartment(1);
de.Name = "new";
de.ParentId = 1;
....
UpdateDepartment(de);//传过去进行更新

我的期望是:通过外部的对象实例,传进去,只要是主键一样的,能进行Update操作。但以上的代码一直会报错:ObjectStateManager 不包含具有对“ServiceLibrary.Department”类型的对象的引用的 ObjectStateEntry

[解决办法]
CreateDepartment直接new一个对象,它和当前上下文并无关系,简单做法是根据pk查询出一个dept,然后修改属性并update。

但你的update方法也要修改,实体对象和entitycontext是相关的,查询,更新都应该在一个context里完成。
[解决办法]
MVC beta 版本结合 linq to entity 可以解决你这个功能
UpdateModel(post, new[]{ "Title", "Content", "Slug", "Tags", "Categories" }, new PostValueProvider(ControllerContext));

读书人网 >.NET

热点推荐