Bagikan melalui


Gambaran Umum Entity Framework

Entity Framework adalah seperangkat teknologi di ADO.NET yang mendukung pengembangan aplikasi perangkat lunak berorientasi data. Arsitek dan pengembang aplikasi berorientasi data telah berjuang dengan kebutuhan untuk mencapai dua tujuan yang sangat berbeda. Mereka harus memodelkan entitas, hubungan, dan logika masalah bisnis yang mereka pecahkan, dan mereka juga harus bekerja dengan mesin data yang digunakan untuk menyimpan dan mengambil data. Data dapat menjangkau beberapa sistem penyimpanan, masing-masing dengan protokolnya sendiri; bahkan aplikasi yang bekerja dengan sistem penyimpanan tunggal harus menyeimbangkan persyaratan sistem penyimpanan dengan persyaratan penulisan kode aplikasi yang efisien dan dapat dipelihara.

Entity Framework memungkinkan pengembang untuk bekerja dengan data dalam bentuk objek dan properti khusus domain, seperti pelanggan dan alamat pelanggan, tanpa harus memperhatikan tabel dan kolom database yang mendasari tempat data ini disimpan. Dengan Entity Framework, pengembang dapat bekerja pada tingkat abstraksi yang lebih tinggi ketika mereka berurusan dengan data, dan dapat membuat dan memelihara aplikasi berorientasi data dengan kode yang lebih sedikit daripada di aplikasi tradisional. Karena Entity Framework adalah komponen dari .NET Framework, aplikasi Entity Framework dapat berjalan di komputer mana pun yang memasang .NET Framework yang dimulai dengan versi 3.5 SP1.

Berikan kehidupan pada model

Pendekatan desain lama dan umum saat membangun aplikasi atau layanan adalah pembagian aplikasi atau layanan menjadi tiga bagian: model domain, model logis, dan model fisik. Model domain mendefinisikan entitas dan hubungan dalam sistem yang sedang dimodelkan. Model logis untuk database relasional menormalkan entitas dan hubungan ke dalam tabel dengan batasan kunci asing. Model fisik membahas kemampuan mesin data tertentu dengan menentukan detail penyimpanan seperti partisi dan pengindeksan.

Model fisik disempurnakan oleh administrator basis data untuk meningkatkan performa, tetapi pemrogram yang menulis kode aplikasi terutama membatasi diri untuk bekerja dengan model logis dengan menulis kueri SQL dan memanggil prosedur tersimpan. Model domain umumnya digunakan sebagai alat untuk menangkap dan mengkomunikasikan persyaratan aplikasi, sering kali sebagai diagram inert yang dilihat dan dibahas pada tahap awal proyek dan kemudian ditinggalkan. Banyak tim pengembangan melewatkan pembuatan model konseptual dan mulai dengan menentukan tabel, kolom, dan kunci dalam database relasional.

Entity Framework menghidupkan model dengan memungkinkan pengembang untuk menanyakan entitas dan hubungan dalam model domain (disebut model konseptual dalam Entity Framework) sambil mengandalkan Entity Framework untuk menerjemahkan operasi tersebut ke sumber data yang spesifik perintah. Ini membebaskan aplikasi dari dependensi yang dikodekan secara permanen pada sumber data tertentu.

Saat bekerja dengan Code First, model konseptual dipetakan ke model penyimpanan dalam kode. Entity Framework dapat menyimpulkan model konseptual berdasarkan tipe objek dan konfigurasi tambahan yang Anda tetapkan. Metadata pemetaan dihasilkan selama waktu berjalan berdasarkan kombinasi cara Anda menentukan jenis domain dan informasi konfigurasi tambahan yang Anda berikan dalam kode. Entity Framework menghasilkan database sesuai kebutuhan berdasarkan metadata. Untuk informasi selengkapnya, lihat Membuat Model.

Saat bekerja dengan Alat Model Data Entitas, model konseptual, model penyimpanan, dan pemetaan antara keduanya diekspresikan dalam skema berbasis XML dan didefinisikan dalam file yang memiliki ekstensi nama yang sesuai:

  • Conceptual schema definition language (CSDL) mendefinisikan model konseptual. CSDL adalah implementasi Entity Framework dari Model Data Entitas. Ekstensi filenya adalah .csdl.

  • Store schema definition language (SSDL) mendefinisikan model penyimpanan, yang juga disebut model logis. Ekstensi filenya adalah .ssdl.

  • Mapping specification language (MSL) mendefinisikan pemetaan antara penyimpanan dan model konseptual. Ekstensi filenya adalah .msl.

Model penyimpanan dan pemetaan dapat berubah sesuai kebutuhan tanpa memerlukan perubahan pada model konseptual, kelas data, atau kode aplikasi. Karena model penyimpanan khusus untuk penyedia, Anda dapat bekerja dengan model konseptual yang konsisten di berbagai sumber data.

Entity Framework menggunakan model dan file pemetaan ini untuk membuat, membaca, memperbarui, dan menghapus operasi terhadap entitas dan hubungan dalam model konseptual dengan operasi yang setara di sumber data. Entity Framework bahkan mendukung pemetaan entitas dalam model konseptual ke prosedur tersimpan di sumber data. Untuk informasi selengkapnya, lihat Spesifikasi CSDL, SSDL, dan MSL.

Memetakan objek ke data

Pemrograman berorientasi objek menimbulkan tantangan untuk berinteraksi dengan sistem penyimpanan data. Meskipun organisasi kelas sering mencerminkan organisasi tabel database relasional, kecocokannya tidak sempurna. Beberapa tabel yang dinormalisasi sering berhubungan dengan satu kelas, dan hubungan antar kelas sering direpresentasikan secara berbeda dari hubungan antar tabel yang direpresentasikan. Misalnya, untuk mewakili pelanggan untuk pesanan penjualan, kelas Order mungkin menggunakan properti yang berisi referensi ke instans kelas Customer, sedangkan baris tabel Order dalam database berisi kolom kunci asing (atau kumpulan kolom) dengan nilai yang sesuai dengan nilai kunci utama di tabel Customer. Kelas Customer mungkin memiliki properti bernama Orders yang berisi kumpulan instans kelas Order, sedangkan tabel Customer dalam database tidak memiliki kolom yang sebanding. Entity Framework menyediakan pengembang dengan fleksibilitas untuk mewakili hubungan dengan cara ini, atau untuk lebih dekat model hubungan seperti yang diwakili dalam database.

Solusi yang ada telah mencoba menjembatani kesenjangan ini, yang sering disebut "ketidakcocokan impedansi", dengan hanya memetakan kelas dan properti berorientasi objek ke tabel dan kolom relasional. Alih-alih mengambil pendekatan tradisional ini, Entity Framework memetakan tabel relasional, kolom, dan batasan kunci asing dalam model logis ke entitas dan hubungan dalam model konseptual. Hal ini memungkinkan fleksibilitas yang lebih besar baik dalam mendefinisikan objek dan mengoptimalkan model logis. Alat Model Data Entitas menghasilkan kelas data yang dapat diperluas berdasarkan model konseptual. Kelas-kelas ini adalah kelas parsial yang dapat diperpanjang dengan anggota tambahan yang ditambahkan pengembang. Secara default, kelas yang dihasilkan untuk model konseptual tertentu berasal dari kelas dasar yang menyediakan layanan untuk mewujudkan entitas sebagai objek dan untuk melacak dan menyimpan perubahan. Pengembang dapat menggunakan kelas ini untuk bekerja dengan entitas dan hubungan sebagai objek yang terkait dengan asosiasi. Pengembang juga dapat menyesuaikan kelas yang dihasilkan untuk model konseptual. Untuk informasi selengkapnya, baca Menggunakan Objek.

Mengakses dan mengubah data entitas

Lebih dari sekedar solusi pemetaan objek-relasional, Entity Framework pada dasarnya adalah tentang memungkinkan aplikasi untuk mengakses dan mengubah data yang direpresentasikan sebagai entitas dan hubungan dalam model konseptual. Entity Framework menggunakan informasi dalam model dan file pemetaan untuk menerjemahkan kueri objek terhadap tipe entitas yang diwakili dalam model konseptual ke dalam kueri khusus sumber data. Hasil kueri diwujudkan menjadi objek yang dikelola oleh Entity Framework. Entity Framework menyediakan cara berikut untuk menanyakan model konseptual dan mengembalikan objek:

  • LINQ ke Entitas. Menyediakan dukungan Language-Integrated Query (LINQ) untuk membuat kueri jenis entitas yang ditentukan dalam model konseptual. Untuk informasi selengkapnya, baca LINQ ke Entitas.

  • Entity SQL. Dialek SQL penyimpanan-independen yang bekerja secara langsung dengan entitas dalam model konseptual dan yang mendukung konsep Model Data Entitas. Entity SQL digunakan baik dengan kueri objek maupun kueri yang dijalankan dengan menggunakan penyedia EntityClient. Untuk informasi selengkapnya, lihat Gambaran Umum Entity SQL.

Entity Framework menyertakan penyedia data EntityClient. Penyedia ini mengelola koneksi, menerjemahkan kueri entitas menjadi kueri khusus sumber data, dan mengembalikan pembaca data yang digunakan Entity Framework untuk mewujudkan data entitas menjadi objek. Ketika materialisasi objek tidak diperlukan, penyedia EntityClient juga dapat digunakan seperti penyedia data ADO.NET standar dengan mengaktifkan aplikasi untuk mengeksekusi kueri Entity SQL dan menggunakan pembaca data read-only yang dikembalikan. Untuk informasi selengkapnya, lihat Penyedia EntityClient untuk Entity Framework.

Diagram berikut menggambarkan arsitektur Entity Framework untuk mengakses data:

Entity Framework Architectural Diagram

Alat Model Data Entitas dapat menghasilkan kelas yang diturunkan dari System.Data.Objects.ObjectContext atau System.Data.Entity.DbContext yang mewakili wadah entitas dalam model konseptual. Konteks objek ini menyediakan fasilitas untuk melacak perubahan dan mengelola identitas, konkurensi, dan hubungan. Kelas ini juga memperlihatkan metode SaveChanges yang menulis sisipan, pembaruan, dan penghapusan ke sumber data. Seperti kueri, perubahan ini dibuat oleh perintah yang dibuat secara otomatis oleh sistem atau oleh prosedur tersimpan yang ditentukan oleh pengembang.

Penyedia data

Penyedia EntityClient memperluas model penyedia ADO.NET dengan mengakses data dalam bentuk entitas dan hubungan konseptual. Itu mengeksekusi kueri yang menggunakan Entity SQL. Entity SQL menyediakan bahasa kueri yang mendasari yang memungkinkan EntityClient untuk berkomunikasi dengan database. Untuk informasi selengkapnya, lihat Penyedia EntityClient untuk Entity Framework.

Entity Framework mencakup Penyedia Data SqlClient yang diperbarui yang mendukung pohon perintah kanonis. Untuk informasi selengkapnya, lihat SqlClient untuk Entity Framework.

Alat model data entitas

Bersama dengan runtime Entity Framework, Visual Studio menyertakan alat pemetaan dan pemodelan. Untuk informasi selengkapnya, lihat Pemodelan dan Pemetaan.

Pelajari Selengkapnya

Untuk mempelajari selengkapnya tentang Entity Framework, lihat:

Memulai - Menyediakan informasi tentang cara memulai dan menjalankan dengan cepat menggunakan Mulai Cepat, yang menunjukkan cara membuat aplikasi Entity Framework sederhana.

Terminologi Entity Framework - Menentukan banyak istilah yang diperkenalkan oleh Model Data Entitas dan Entity Framework dan yang digunakan dalam dokumentasi Entity Framework.

Sumber Daya Entity Framework - Menyediakan tautan ke topik konseptual dan tautan ke topik dan sumber daya eksternal untuk membangun aplikasi Entity Framework.

Lihat juga