Pemisahan Tabel Perancang

Panduan ini menunjukkan cara memetakan beberapa jenis entitas ke satu tabel dengan memodifikasi model dengan Perancang Kerangka Kerja Entitas (Desainer EF).

Salah satu alasan Anda mungkin ingin menggunakan pemisahan tabel adalah untuk menunda pemuatan beberapa atribut saat menggunakan lazy loading untuk memuat objek Anda. Anda dapat memisahkan properti yang mungkin berisi data dalam jumlah yang sangat besar ke dalam entitas terpisah dan hanya memuatnya jika diperlukan.

Gambar berikut menunjukkan jendela utama yang digunakan saat bekerja dengan EF Designer.

Desainer EF

Prasyarat

Untuk menyelesaikan panduan ini, Anda memerlukan:

Menyiapkan Proyek

Panduan ini menggunakan Visual Studio 2012.

  • Buka Visual Studio 2012.
  • Pada menu File , arahkan ke Baru, lalu klik Proyek.
  • Di panel kiri, klik Visual C#, lalu pilih templat Aplikasi Konsol.
  • Masukkan TableSplittingSample sebagai nama proyek dan klik OK.

Membuat Model berdasarkan Database Sekolah

  • Klik kanan nama proyek di Penjelajah Solusi, arahkan ke Tambahkan, lalu klik Item Baru.
  • Pilih Data dari menu sebelah kiri lalu pilih ADO.NET Model Data Entitas di panel Templat.
  • Masukkan TableSplittingModel.edmx untuk nama file, lalu klik Tambahkan.
  • Dalam kotak dialog Pilih Konten Model, pilih Hasilkan dari database, lalu klik Berikutnya.
  • Klik Koneksi Baru. Dalam kotak dialog Properti Koneksi, masukkan nama server (misalnya, (localdb)\mssqllocaldb), pilih metode autentikasi, ketik Sekolah untuk nama database, lalu klik OK. Kotak dialog Pilih Koneksi Data Anda diperbarui dengan pengaturan koneksi database Anda.
  • Dalam kotak dialog Pilih Objek Database Anda, buka simpul Tabel dan centang tabel Orang . Ini akan menambahkan tabel yang ditentukan ke model Sekolah .
  • Klik Selesai.

Perancang Entitas, yang menyediakan permukaan desain untuk mengedit model Anda, ditampilkan. Semua objek yang Anda pilih dalam kotak dialog Pilih Objek Database Anda ditambahkan ke model.

Memetakan Dua Entitas ke Satu Tabel

Di bagian ini Anda akan membagi entitas Orang menjadi dua entitas lalu memetakannya ke satu tabel.

Nota

Entitas Orang tidak berisi properti apa pun yang mungkin berisi data dalam jumlah besar; itu hanya digunakan sebagai contoh.

  • Klik kanan area kosong dari permukaan desain, arahkan ke Tambahkan Baru, dan klik Entitas. Kotak dialog Entitas Baru muncul.
  • Ketik HireInfo untuk Nama entitas dan PersonID untuk nama Properti Kunci .
  • Klik OK.
  • Jenis entitas baru dibuat dan ditampilkan pada permukaan desain.
  • Pilih properti HireDate dari jenis entitas Orang dan tekan tombol Ctrl+X .
  • Pilih entitas HireInfo dan tekan tombol Ctrl+V .
  • Buat hubungan antara Orang dan HireInfo. Untuk melakukan ini, klik kanan area kosong dari permukaan desain, arahkan ke Tambahkan Baru, dan klik Asosiasi.
  • Kotak dialog Tambahkan Asosiasi muncul. Nama PersonHireInfo diberikan secara default.
  • Tentukan multiplicity 1(One) di kedua sisi hubungan.
  • Tekan OK.

Langkah berikutnya memerlukan jendela Detail Pemetaan . Jika Anda tidak dapat melihat jendela ini, klik kanan permukaan desain dan pilih Detail Pemetaan.

  • Pilih jenis entitas HireInfo dan klik <Tambahkan Tabel atau Tampilan> di jendela Detail Pemetaan .

  • Pilih Person dari daftar drop-down <Tambah Tabel atau Tampilan> bidang. Daftar berisi tabel atau tampilan tempat entitas yang dipilih dapat dipetakan. Properti yang sesuai harus dipetakan secara default.

    Properti Pemetaan

  • Pilih asosiasi PersonHireInfo pada permukaan desain.

  • Klik kanan asosiasi pada permukaan desain dan pilih Properti.

  • Di jendela Properti , pilih properti Batasan Referensial dan klik tombol elipsis.

  • Pilih Person dari daftar drop-down Principal.

  • Tekan OK.

 

Menggunakan Model

  • Tempelkan kode berikut dalam metode Utama.
    using (var context = new SchoolEntities())
    {
        Person person = new Person()
        {
            FirstName = "Kimberly",
            LastName = "Morgan",
            Discriminator = "Instructor",
        };

        person.HireInfo = new HireInfo()
        {
            HireDate = DateTime.Now
        };

        // Add the new person to the context.
        context.People.Add(person);

        // Insert a row into the Person table.  
        context.SaveChanges();

        // Execute a query against the Person table.
        // The query returns columns that map to the Person entity.
        var existingPerson = context.People.FirstOrDefault();

        // Execute a query against the Person table.
        // The query returns columns that map to the Instructor entity.
        var hireInfo = existingPerson.HireInfo;

        Console.WriteLine("{0} was hired on {1}",
            existingPerson.LastName, hireInfo.HireDate);
    }
  • Kompilasi dan jalankan aplikasi.

Pernyataan T-SQL berikut dijalankan terhadap database Sekolah sebagai hasil dari menjalankan aplikasi ini. 

  • INSERT berikut dijalankan sebagai hasil dari konteks eksekusi. SaveChanges() dan menggabungkan data dari entitas Person dan HireInfo

    Sisipkan Penggabungan Data Orang dengan Data HiringInfo

  • SELECT berikut dijalankan sebagai hasil dari menjalankan context.People.FirstOrDefault() dan memilih hanya kolom yang dipetakan ke Person

    Pilih 1

  • SELECT berikut dijalankan sebagai hasil dari mengakses properti navigasi existingPerson.Instructor dan hanya memilih kolom yang dipetakan ke HireInfo

    Pilih 2