使用ADO.NET Entity Framework 4.0更新数据库

时间:2011-10-24 19:05:18

标签: c# entity-framework-4

我使用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();
        }

    }

这种更新方法还可以吗?因为首先我必须从对象上下文获取对象然后我可以更新。

你的建议。感谢您的帮助和建议

1 个答案:

答案 0 :(得分:1)

我们通过以下方式进行:     context.TableName.Attach(对象);     context.ObjectStateManager.ChangeObjectState(object,System.Data.EntityState.Modified);     context.SaveChanges();

可以将EntityState.Modified更改为EntityState.Added以添加新项目,或者删除以删除现有项目。