我使用ADO.NET EF 4.0。首先,我从DB获取对象并分离此对象,由客户端的Web服务发送。
网络服务:
private static Project GetObjects(int id)
{
var connSetting = ConfigurationManager.ConnectionStrings["ProjectEntities"];
var conn = new EntityConnection(connSetting.ConnectionString);
conn.Open();
using(var contex= new ProjectEntities(conn))
{
var project = (from p in contex.Projects
where p.ProjectId == id
select p).FirstOrDefault();
contex.Detach(project);
return project;
}
}
在客户端,此对象是编辑后发送回Web服务,在Web服务端我需要使用此对象DB进行更新。
现在我用它:
private static void UpdateObject(Project obj)
{
var connSetting = ConfigurationManager.ConnectionStrings["ProjectEntities"];
var conn = new EntityConnection(connSetting.ConnectionString);
conn.Open();
using (var contex = new ProjectEntities(conn))
{
var entity = (Project)contex.GetObjectByKey(obj.EntityKey);
contex.ApplyCurrentValues(entity.EntityKey.EntitySetName, obj);
contex.SaveChanges();
}
}
这种更新方法还可以吗?因为首先我必须从对象上下文获取对象然后我可以更新。
你的建议。感谢您的帮助和建议
答案 0 :(得分:1)
我们通过以下方式进行: context.TableName.Attach(对象); context.ObjectStateManager.ChangeObjectState(object,System.Data.EntityState.Modified); context.SaveChanges();
可以将EntityState.Modified更改为EntityState.Added以添加新项目,或者删除以删除现有项目。