C# 使用ADO.NET实体框架4.0更新数据库
我使用ADO.NETEF4.0。首先,我从DB中获取对象并分离这个对象,它由客户端的web服务发送 网络服务:C# 使用ADO.NET实体框架4.0更新数据库,c#,entity-framework-4,C#,Entity Framework 4,我使用ADO.NETEF4.0。首先,我从DB中获取对象并分离这个对象,它由客户端的web服务发送 网络服务: private static Project GetObjects(int id) { var connSetting = ConfigurationManager.ConnectionStrings["ProjectEntities"]; var conn = new EntityConnection(connSetting.Conne
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服务端,我需要使用这个对象数据库进行更新
现在我用这个:
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();
}
}
这个更新方法可以吗?因为首先我必须从对象上下文中获取对象,然后才能更新
你的建议。感谢您的帮助和建议我们按以下方式进行: context.TableName.Attach(对象); context.ObjectStateManager.ChangeObjectState(对象,System.Data.EntityState.Modified); SaveChanges()
EntityState.Modified可以更改为EntityState.Added以添加新项目,或者delete以删除现有项目。不确定手动打开连接的原因,如果您只是传递
上下文
连接字符串并允许它根据需要打开和关闭数据库连接,这似乎是不必要的工作。(这不完全是你想要的,但如果有其他原因,也许我会学到一些东西)。