Perbarui DB dengan ADO.NET Entity Framework 4.0

Saya menggunakan ADO.NET EF 4.0. Pertama saya mendapatkan objek dari DB dan melepaskan objek ini, yang dikirim oleh layanan web di sisi klien.

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

di sisi klien, apakah objek ini diedit dan dikirim kembali ke layanan web, di sisi layanan web saya perlu pembaruan dengan DB objek ini.

Sekarang saya menggunakan ini:

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

    }

Metode pembaruan ini oke? Karena pertama-tama saya harus mendapatkan objek dari konteks objek dan kemudian saya dapat memperbaruinya.

Apa yang Anda sarankan. Terima kasih atas bantuan dan saran Anda


person Community    schedule 24.10.2011    source sumber
comment
Tidak yakin mengapa Anda membuka koneksi secara manual, sepertinya pekerjaan tidak perlu ketika Anda hanya meneruskan Context ke ConnectionString dan mengizinkannya untuk membuka dan menutup koneksi database sesuai kebutuhan. (Tidak persis seperti yang Anda cari, tetapi jika ada alasan lain untuk ini, mungkin saya akan mempelajari sesuatu).   -  person Erik Philips    schedule 24.10.2011


Jawaban (1)


Kami melakukannya dengan cara berikut: konteks.NamaTabel.Lampirkan(objek); konteks.ObjectStateManager.ChangeObjectState(objek, Sistem.Data.EntityState.Modified); konteks.SimpanPerubahan();

EntityState.Modified dapat diubah menjadi EntityState.Added untuk menambahkan item baru atau Deleted untuk menghapus item yang sudah ada.

person Dirk Dastardly    schedule 24.10.2011