Обновите БД с помощью ADO.NET Entity Framework 4.0

Я использую ADO.NET EF 4.0. Сначала я получаю объект из БД и отсоединяю этот объект, отправленный веб-службой на стороне клиента.

веб-сервис:

    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;
        }
    }

на стороне клиента, редактируется ли этот объект и отправляется обратно в веб-службу, на стороне веб-службы мне нужно обновить эту объектную базу данных.

Теперь я использую это:

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

    }

Этот метод обновления подходит? Потому что сначала я должен получить объект из контекста объекта, а затем я могу обновить.

Что вы предлагаете. Спасибо за вашу помощь и совет


person Community    schedule 24.10.2011    source источник
comment
Не уверен, почему вы вручную открываете соединение, кажется ненужной работой, когда вы просто передаете Context ConnectionString и позволяете ему открывать и закрывать соединение с базой данных по мере необходимости. (Не совсем то, что вы искали, но если для этого есть какая-то другая причина, то, возможно, я бы кое-что узнал).   -  person Erik Philips    schedule 24.10.2011


Ответы (1)


Делаем это следующим образом: context.TableName.Attach(object); context.ObjectStateManager.ChangeObjectState(объект, System.Data.EntityState.Modified); контекст.Сохранить изменения();

EntityState.Modified можно изменить на EntityState.Added, чтобы добавить новый элемент, или на Deleted, чтобы удалить существующий элемент.

person Dirk Dastardly    schedule 24.10.2011