Bagaimana cara menghubungkan database mysql ke dotnet core?

Pada pelajaran terakhir, kita membuat database to do list menggunakan MySQL Workbench. Dalam pelajaran ini, kita akan menghubungkan database ke aplikasi kita menggunakan alat bernama MySqlConnector. Setelah terhubung, kita akan dapat berinteraksi dengan database kita dan tabelnya sebagai objek C# di aplikasi kita

Pertama, mari kita pikirkan bagaimana kita akan memfaktorkan ulang aplikasi To Do List kita untuk menggunakan database

To Do List Rencana Refactor Database


Pekerjaan rumah akhir pekan lainnya akan berfokus pada membangun metode untuk mengakses dan memperbarui basis data kita dari awal. Proses ini padat karya dan melibatkan banyak kode boilerplate yang membosankan. Nanti di bagian ini, kita akan belajar menggunakan kerangka kerja yang disebut Inti Kerangka Kerja Entitas yang mengelola koneksi basis data kita dan menyediakan metode yang mudah digunakan untuk mengakses dan memperbarui basis data kita. Tujuan membangun metode basis data dari awal sekarang adalah untuk mendapatkan pemahaman tentang apa yang sebenarnya terjadi sebelum kita mulai menggunakan Entity Framework Core

Anda dipersilakan untuk membuat kode bersama dengan pelajaran ini, atau hanya untuk membacanya. Di akhir panduan ini, kami akan memberikan contoh repo dengan proyek yang sudah selesai. Jika Anda ingin mengetahui proyek yang sudah selesai sebelumnya, lanjutkan dan lihat repo berikut


Contoh GitHub Repo untuk To Do List dengan MySqlConnector

Struktur & Konfigurasi Proyek


Mari kita mulai refactoring aplikasi To Do List kita untuk menggunakan database MySQL. Setelah mengikuti pelajaran bagian terakhir, struktur file dan folder To Do List kita akan terlihat seperti ini

ToDoList.Solution
├── ToDoList
│   ├── Controllers
│   │   ├── CategoriesController.cs
│   │   ├── HomeController.cs
│   │   └── ItemsController.cs
│   ├── Models
│   │   ├── Category.cs
│   │   └── Item.cs
│   ├── Program.cs
│   ├── Properties
│   │   └── launchSettings.json
│   ├── ToDoList.csproj
│   └── Views
│       ├── Categories
│       │   ├── Index.cshtml
│       │   ├── New.cshtml
│       │   └── Show.cshtml
│       ├── Home
│       │   └── Index.cshtml
│       └── Items
│           ├── New.cshtml
│           └── Show.cshtml
└── ToDoList.Tests
    ├── ModelTests
    │   ├── CategoryTests.cs
    │   └── ItemTests.cs
    └── ToDoList.Tests.csproj

Direktori proyek Anda mungkin sedikit berbeda jika Anda menambahkan direktori

$ dotnet add package MySqlConnector -v 2.2.0
0 dengan file
$ dotnet add package MySqlConnector -v 2.2.0
1 atau jika Anda menyertakan aset statis dalam direktori
$ dotnet add package MySqlConnector -v 2.2.0
2 (dengan subdirektori terkait)

Instalasi & Konfigurasi MySqlConnector


Kita akan mulai dengan menelusuri cara menyiapkan koneksi database MySQL dalam proyek menggunakan MySqlConnector. Mari perbarui file

$ dotnet add package MySqlConnector -v 2.2.0
3 kita untuk menyertakan MySqlConnector

Menginstal Paket MySqlConnector

Kita dapat menggunakan perintah berikut di direktori produksi proyek kita (

$ dotnet add package MySqlConnector -v 2.2.0
4) untuk menambahkan paket ini

$ dotnet add package MySqlConnector -v 2.2.0
_

Perintah ini juga harus mengembalikan paket secara otomatis di aplikasi kita, tetapi jika Anda menemukan kesalahan, jalankan perintah berikut untuk memulihkan paket secara manual

$ dotnet restore

Membuat String Koneksi Database

Saat kita terhubung ke database kita, kita harus membuka koneksi secara manual dengan membuat instance baru dari kelas

$ dotnet add package MySqlConnector -v 2.2.0
5 dari paket MySqlConnector. Kita akan belajar dengan tepat bagaimana melakukan ini dalam pelajaran yang akan datang. Yang penting untuk diketahui saat ini adalah konstruktor
$ dotnet add package MySqlConnector -v 2.2.0
_5 mengharapkan string koneksi database yang berisi detail akses database kita. namanya, pengguna dan kata sandi basis data, serta server dan port basis data. Untuk aplikasi To Do List kami, seperti inilah tampilan string koneksi kami

"server=localhost;port=3306;uid=root;pwd=epicodus;database=to_do_list_with_mysqlconnector;"

String koneksi mencakup lima bagian berbeda

  • $ dotnet add package MySqlConnector -v 2.2.0
    
    _7 mengidentifikasi server basis data kami. Kami mencantumkan
    $ dotnet add package MySqlConnector -v 2.2.0
    
    _8 karena aplikasi kami berjalan di server lokal ke mesin kami, bukan online

  • $ dotnet add package MySqlConnector -v 2.2.0
    
    _9 mengidentifikasi pengguna basis data kami. Dalam Program LearnHowTo. com contoh pelajaran, kami akan selalu menganggap pengguna adalah 'root'

  • $ dotnet restore
    
    0 memberikan kata sandi untuk pengguna tertentu. Anda harus memasukkan kata sandi Anda sendiri yang Anda atur sebagai nilai ke bidang ini. Dalam Program LearnHowTo. com contoh pelajaran, kami akan selalu menganggap kata sandinya adalah 'epicodus'

  • $ dotnet restore
    
    1 mengidentifikasi port yang digunakan MySQL. Nomor port default untuk server MySQL adalah 3306

  • $ dotnet restore
    
    2 adalah nama basis data. Dalam kasus kita, ini adalah database
    $ dotnet restore
    
    _3 yang kita buat beberapa pelajaran lalu

Melindungi String Koneksi Database dengan $ dotnet restore 4

Khususnya, string koneksi berisi data sensitif (kata sandi dan nama pengguna) yang tidak ingin kami ungkapkan di internet. Jadi apa yang dapat kita lakukan untuk menyembunyikan informasi ini, tetapi tetap menggunakannya dalam proyek kita? . NET Core menyediakan dukungan bawaan untuk mengelola konfigurasi aplikasi melalui file bernama

$ dotnet restore
4. Seperti namanya, file ini ditulis dalam JSON dan berisi pengaturan aplikasi, seperti string koneksi database

Untuk melindungi data di

$ dotnet restore
_4, kita harus menambahkannya ke
$ dotnet restore
7 kita sehingga tidak pernah disimpan ke repositori jarak jauh kita. Mari kita lakukan itu dulu, sebelum kita membuat
$ dotnet restore
4

obj
bin
appsettings.json

Pastikan untuk melakukan perubahan yang Anda buat pada

$ dotnet restore
7 Anda sebelum melanjutkan

Selanjutnya, mari buat

$ dotnet restore
_4. Di dalam direktori produksi proyek kami (
$ dotnet add package MySqlConnector -v 2.2.0
4), buat
$ dotnet restore
4 dan tambahkan kode berikut ke dalamnya

ToDoList. Solusi/ToDoList/appsettings. json

{
    "ConnectionStrings": {
        "DefaultConnection": "Server=localhost;Port=3306;database=to_do_list_with_mysqlconnector;uid=[YOUR-USERNAME-HERE];pwd=[YOUR-PASSWORD-HERE];"
    }
}

Pastikan untuk memperbarui string koneksi dengan nilai yang Anda tetapkan untuk nama pengguna dan kata sandi Anda. Seperti disebutkan sebelumnya, kami akan selalu menganggap pengguna adalah 'root' dan kata sandinya adalah

"server=localhost;port=3306;uid=root;pwd=epicodus;database=to_do_list_with_mysqlconnector;"
3

Perhatikan juga bahwa karena

$ dotnet restore
4 kami telah dimasukkan ke dalam
$ dotnet restore
7 kami, pengguna tidak akan memiliki akses ke sana saat mengkloning proyek kami. Ini berarti Anda perlu menambahkan instruksi spesifik di README Anda yang memberi tahu pengguna di mana membuat file, dan kode apa yang harus disertakan di dalamnya. Sebaiknya gunakan pemformatan di atas dan arahkan pengguna untuk mengganti
"server=localhost;port=3306;uid=root;pwd=epicodus;database=to_do_list_with_mysqlconnector;"
6 dan
"server=localhost;port=3306;uid=root;pwd=epicodus;database=to_do_list_with_mysqlconnector;"
7 dengan nilai pengguna dan kata sandi pengguna itu sendiri

Mengakses $ dotnet restore _4 melalui "server=localhost;port=3306;uid=root;pwd=epicodus;database=to_do_list_with_mysqlconnector;" 9 di obj bin appsettings.json 0

ASP. NET Core secara otomatis memuat

$ dotnet restore
4 sebagai file konfigurasi resmi host aplikasi kami. Ini terjadi secara implisit saat kita membuat
obj
bin
appsettings.json
2 di
obj
bin
appsettings.json
0. Ingat baris kode berikut?

ToDoList. Solusi/ToDoList/Program. cs

using Microsoft.AspNetCore.Builder;
using Microsoft.Extensions.DependencyInjection;
using ToDoList.Models;

namespace ToDoList
{
  class Program
  {
    static void Main(string[] args)
    {
      WebApplicationBuilder builder = WebApplication.CreateBuilder(args);

      ...
    }
  }
}

Nah, saat kita membuat instance

obj
bin
appsettings.json
_4, konfigurasi kita di
$ dotnet restore
4 otomatis dimuat dan ditambahkan ke host aplikasi web kita sebagai properti dari instance
obj
bin
appsettings.json
4.
"server=localhost;port=3306;uid=root;pwd=epicodus;database=to_do_list_with_mysqlconnector;"
_9. Inilah cara kami mengakses string koneksi basis data kami di
obj
bin
appsettings.json
0

builder.Configuration["ConnectionStrings:DefaultConnection"];

Implikasi besarnya di sini adalah kita tidak dapat mengakses

$ dotnet restore
4 data dari sembarang tempat di aplikasi kita. Jika kami ingin mengakses data di
$ dotnet restore
4, kami harus melakukannya melalui
"server=localhost;port=3306;uid=root;pwd=epicodus;database=to_do_list_with_mysqlconnector;"
9 di
obj
bin
appsettings.json
0 ketika kami membuat host aplikasi web kami. Jadi, dua langkah kita selanjutnya adalah membuat kelas dengan properti yang menampung string koneksi database yang dapat kita gunakan di seluruh aplikasi kita, lalu perbarui
obj
bin
appsettings.json
0 untuk menetapkan nilai properti itu

Membuat String Koneksi Tersedia di seluruh Aplikasi

Pertama mari kita buat kelas untuk menyimpan string koneksi database. Buat file baru bernama

{
    "ConnectionStrings": {
        "DefaultConnection": "Server=localhost;Port=3306;database=to_do_list_with_mysqlconnector;uid=[YOUR-USERNAME-HERE];pwd=[YOUR-PASSWORD-HERE];"
    }
}
_4 dan tambahkan ke direktori
{
    "ConnectionStrings": {
        "DefaultConnection": "Server=localhost;Port=3306;database=to_do_list_with_mysqlconnector;uid=[YOUR-USERNAME-HERE];pwd=[YOUR-PASSWORD-HERE];"
    }
}
5

ToDoList. Solusi/ToDoList/Models/DatabaseConfig. cs

namespace ToDoList.Models
{
  public static class DBConfiguration
  {
    public static string ConnectionString { get; set; }
  }
}

Perhatikan bahwa kita dapat menamai nama file, nama kelas, dan properti apa pun yang kita suka selama kita mengikuti konvensi umum penamaan deskriptif

Perhatikan juga bahwa kelas dan properti keduanya

{
    "ConnectionStrings": {
        "DefaultConnection": "Server=localhost;Port=3306;database=to_do_list_with_mysqlconnector;uid=[YOUR-USERNAME-HERE];pwd=[YOUR-PASSWORD-HERE];"
    }
}
6, artinya kelas tidak dapat memiliki instance, dan properti juga tidak dapat dipanggil pada instance. Saat kami ingin mendapatkan atau menyetel
{
    "ConnectionStrings": {
        "DefaultConnection": "Server=localhost;Port=3306;database=to_do_list_with_mysqlconnector;uid=[YOUR-USERNAME-HERE];pwd=[YOUR-PASSWORD-HERE];"
    }
}
_7, kami akan melakukannya dengan mengakses
{
    "ConnectionStrings": {
        "DefaultConnection": "Server=localhost;Port=3306;database=to_do_list_with_mysqlconnector;uid=[YOUR-USERNAME-HERE];pwd=[YOUR-PASSWORD-HERE];"
    }
}
8

Selanjutnya mari perbarui

obj
bin
appsettings.json
_0 untuk menetapkan nilai properti
{
    "ConnectionStrings": {
        "DefaultConnection": "Server=localhost;Port=3306;database=to_do_list_with_mysqlconnector;uid=[YOUR-USERNAME-HERE];pwd=[YOUR-PASSWORD-HERE];"
    }
}
7 ke string koneksi database dalam
$ dotnet restore
4. Kita akan melakukannya dengan menambahkan satu baris kode baru ke
obj
bin
appsettings.json
0

ToDoList. Solusi/ToDoList/Program. cs

using Microsoft.AspNetCore.Builder;
using Microsoft.Extensions.DependencyInjection;
using ToDoList.Models;

namespace ToDoList
{
  class Program
  {
    static void Main(string[] args)
    {
      WebApplicationBuilder builder = WebApplication.CreateBuilder(args);

      builder.Services.AddControllersWithViews();

      // new line!
      DBConfiguration.ConnectionString = builder.Configuration["ConnectionStrings:DefaultConnection"];

      WebApplication app = builder.Build();

      ...

      app.Run();
    }
  }
}

Kami sekarang dapat menggunakan string koneksi database kami melalui

{
    "ConnectionStrings": {
        "DefaultConnection": "Server=localhost;Port=3306;database=to_do_list_with_mysqlconnector;uid=[YOUR-USERNAME-HERE];pwd=[YOUR-PASSWORD-HERE];"
    }
}
8 di mana saja di aplikasi kami. Terlebih lagi, kami telah melindungi string koneksi basis data kami dengan menambahkannya ke
$ dotnet restore
4 yang telah kami perintahkan untuk diabaikan oleh Git. Kami belum mempelajari cara membuka koneksi database dengan string koneksi, tetapi itulah yang akan kami lakukan di pelajaran selanjutnya

Selanjutnya, jangan lupa sertakan petunjuk penyiapan di README Anda untuk

$ dotnet restore
4 dengan string koneksi database

Bisakah Anda menggunakan MySQL dengan. inti bersih?

NET Core dan MySQL adalah teknologi sumber terbuka dan gratis. ASP baru. NET Core dapat berjalan di Linux dan di Linux Containers, dan MySQL adalah salah satu database termudah untuk memulai . Ini membuat kombinasi ASP. NET Core dan MySQL merupakan kombinasi yang cukup menarik.

Bagaimana cara terhubung ke database MySQL di asp net c#?

Untuk Menghubungkan ke Database MySQL Menggunakan ASP. BERSIH .
Temukan string koneksi database Anda (Plesk). .
Menggunakan Microsoft Visual Studio. .
Tambahkan referensi ke MySql. .
Ganti nilai dalam kode berikut dengan your_ConnectionString dengan informasi basis data Anda

Bagaimana cara menghubungkan database MySQL dengan Entity Framework Core?

Anda dapat menguji API secara langsung dengan alat seperti Postman atau menghubungkannya dengan contoh aplikasi Angular atau React yang tersedia. .
Mulai dalam mode debug. .
Tambahkan penyedia database MySQL dari NuGet. .
Tambahkan string koneksi ke pengaturan aplikasi. .
Perbarui Konteks Data untuk Menggunakan MySQL. .
Instal alat dotnet ef. .
Tambahkan paket EF Core Design dari NuGet

Cara terhubung ke SQL Server di. inti bersih?

Langkah 1. Buka Visual Studio 2019. .
Langkah 2. Buka SQL Server Object Explorer dan klik Add SQL Server
Langkah 3. Di sini kami memiliki opsi untuk memilih dari SQL Server mesin lokal, terhubung melalui jaringan, dan database Azure SQL. .
Langkah 4. Masukkan nama proyek dan klik Buat
Klik Buat