Bagikan melalui


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 menunda pemuatan beberapa properti saat menggunakan pemuatan malas 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.

EF Designer

Prasyarat

Untuk menyelesaikan panduan ini, Anda memerlukan:

  • Versi terbaru Visual Studio.
  • Database sampel Sekolah.

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 ion baru. Dalam kotak dialog Properti Koneksi ion, masukkan nama server (misalnya, (localdb)\mssqllocaldb), pilih metode autentikasi, ketik Sekolah untuk nama database, lalu klik OK. Kotak dialog Pilih Koneksi si 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.

Catatan

Entitas Orang tidak berisi properti apa pun yang mungkin berisi data dalam jumlah besar; entitas tersebut 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 akhir 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 Orang dari <daftar drop-down Tambahkan Tabel atau Tampilkan> bidang. Daftar berisi tabel atau tampilan tempat entitas yang dipilih dapat dipetakan. Properti yang sesuai harus dipetakan secara default.

    Mapping Properties

  • 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 Orang dari daftar drop-down Utama .

  • 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

    Insert Combining Person and HireInfo Data

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

    Select 1

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

    Select 2