Cara menggunakan DbContext di Entity Framework Core

Kerangka Kerja Entitas Microsoft adalah pemeta relasional objek sumber terbuka, atau ORM, untuk ADO.Net yang membantu Anda mengisolasi model objek aplikasi Anda dari model data. Entity Framework menyederhanakan akses data dalam aplikasi Anda dengan memungkinkan Anda menulis kode untuk melakukan operasi CRUD (Buat, Baca, Perbarui, dan Hapus) tanpa harus mengetahui bagaimana data disimpan dalam database yang mendasarinya.

DbContext bertindak sebagai jembatan antara kelas domain dan database. Pada artikel ini kita akan memeriksa bagaimana kita dapat mengkonfigurasi DbContext menggunakan contoh DbContextOptions untuk menyambung ke database dan melakukan operasi CRUD menggunakan penyedia Entity Framework Core.

DbContext menjelaskan

DbContext adalah komponen integral dari Entity Framework yang mewakili sesi koneksi dengan database. Anda dapat memanfaatkan DbContext untuk membuat kueri data ke dalam entitas Anda atau menyimpan entitas Anda ke database yang mendasarinya. DbContext di Entity Framework Core memiliki sejumlah tanggung jawab:

  • Mengelola koneksi
  • Membuat kueri data dari database
  • Menyimpan data ke database
  • Ubah pelacakan
  • Caching
  • Pengelolaan transaksi

Pada bagian selanjutnya, kita akan membahas bagaimana kita dapat bekerja dengan DbContext di ASP.Net Core.

Buat aplikasi ASP.Net Core di Visual Studio

Kami akan mulai dengan membuat aplikasi ASP.Net Core. Perhatikan bahwa posting ini mengasumsikan bahwa Visual Studio 2017 sudah diinstal di sistem Anda. Jika Anda belum menginstal Visual Studio 2017, Anda dapat mendownload salinannya di sini. Kemudian ikuti langkah-langkah berikut untuk membuat proyek ASP.Net Core baru.

  1. Luncurkan Visual Studio 2017 IDE.
  2. Klik File -> New -> Project.
  3. Pilih template proyek "ASP.Net Core Web Application".
  4. Tentukan nama dan lokasi untuk proyek Anda.
  5. Klik OK.
  6. Di jendela dialog "Aplikasi Web ASP.Net Core Baru", pilih .Net Core.
  7. Pilih ASP.Net Core 2.1 dari daftar drop-down. 
  8. Pilih "Web API" sebagai template proyek. 
  9. Abaikan kotak centang "Aktifkan dukungan Docker"; kami tidak akan menggunakan Docker di sini.
  10. Pastikan pesan "No Authentication" ditampilkan; kami tidak akan membutuhkan ini juga. 
  11. Klik OK

Dan itu dia! Kami akan menggunakan aplikasi ini untuk menjelajahi Entity Framework Core di bagian selanjutnya.

Buat DbContext baru di Entity Framework Core

Untuk membuat kelas Konteks kustom, Anda harus memperluas kelas dasar DbContext di Entity Framework Core seperti yang ditunjukkan di bawah ini.

kelas publik CustomContext: DbContext

    {

        public CustomContext (opsi DbContextOptions): base (opsi)

        {

        }

        dilindungi override void OnConfiguring (DbContextOptionsBuilder optionsBuilder)

        {

           // Tulis kode Anda di sini untuk mengonfigurasi konteks

        }

        perlindungan override void OnModelCreating (ModelBuilder modelBuilder)

        {

            // Tulis kode Anda di sini untuk mengkonfigurasi model

        }

    }

Lihat kelas CustomContext di atas. Perhatikan bahwa itu menerima referensi ke sebuah instance dari kelas DbContextOptions. Instance ini berisi informasi konfigurasi yang dibutuhkan oleh DbContext. Anda juga dapat mengkonfigurasi DbContext menggunakan metode OnConfiguring. Metode OnModelCreating, yang menerima referensi ke instance kelas ModelBuilder sebagai argumen, digunakan untuk mengonfigurasi model.

Di kelas DbContext, Anda biasanya memiliki properti DbSet entitas seperti yang ditunjukkan pada cuplikan kode di bawah ini.

kelas publik CustomContext: DbContext

    {

        public CustomContext (opsi DbContextOptions): base (opsi)

        {

        }

        dilindungi override void OnConfiguring (DbContextOptionsBuilder optionsBuilder)

        {

        }

        perlindungan override void OnModelCreating (ModelBuilder modelBuilder)

        {

        }

        Penulis DbSet publik {get; set; }

        Blog DbSet publik {get; set; }

    }

Daftarkan DbContext dengan runtime Entity Framework Core

Selanjutnya, Anda harus mendaftarkan kelas DbContext kustom Anda sebagai layanan di IServiceCollection melalui metode ConfigureServices dari kelas Startup.

     public void ConfigureServices (layanan IServiceCollection)

        {

            services.AddMvc (). SetCompatibilityVersion

            (CompatibilityVersion.Version_2_1);

            services.AddDbContext (opsi =>

             options.UseSqlServer

             (Configuration.GetConnectionString ("TestConnection")));

        }

String koneksi diperoleh menggunakan instance IConfiguration. Metode ekstensi AddDbContext digunakan untuk mendaftarkan DbContext sebagai layanan. Perhatikan bagaimana referensi ke DbContextOptionsBuilder digunakan untuk mengkonfigurasi DbContextOptions. Metode ekstensi UseSqlServer digunakan untuk mendaftarkan penyedia database SQL Server dengan runtime Entity Framework Core.

Atau, Anda dapat mengganti metode OnConfigure untuk mendaftarkan penyedia database SQL Server seperti yang ditunjukkan dalam cuplikan kode di bawah ini.

dilindungi override void OnConfiguring (DbContextOptionsBuilder optionsBuilder)

    {

        if (! optionsBuilder.IsConfigured)

        {

            optionsBuilder.UseSqlServer ("TestConnection");

        }

    }

Gunakan DbContext dengan injeksi ketergantungan

Untuk menggunakan DbContext kustom yang kami terapkan dalam metode pengontrol, Anda harus memanfaatkan injeksi dependensi. Potongan kode berikut menggambarkan bagaimana hal ini dapat dicapai.

kelas publik ValuesController: ControllerBase

    {

        pribadi CustomContext dbContext;

        public ValuesController (CustomContext customContext)

        {

            dbContext = customContext;

        }

       // Metode lain

    }

Dan hanya itu yang perlu Anda lakukan. Anda sekarang dapat memanfaatkan instance kelas CustomContext dalam metode pengontrol Anda untuk melakukan operasi CRUD.

DbContext secara konseptual seperti ObjectContext. Mewakili kombinasi pola desain unit kerja dan repositori, DbContext bertanggung jawab atas setiap interaksi antara aplikasi dan database yang digunakan. Saya akan membahas aspek tambahan dari Entity Framework Core di posting mendatang di sini.