Bưởi EntityFrameworkCore MySQL là gì?


  
    
    
  
09 là nhà cung cấp Lõi khung thực thể được xây dựng dựa trên MySqlConnector, cho phép sử dụng ORM lõi khung thực thể với MySQL

bưởi. Thực thểKhungLõi. MySql hiện đang tìm kiếm những người đóng góp cốt lõi

khả năng tương thích

Lõi EF và. NET lõi

Các phiên bản sau của EF Core và. NET Core tương thích với


  
    
    
  
09

bưởi. Thực thểKhungLõi. Lõi MySqlEF. NET Core3. 0. 0-rc1. cuối cùng (phát hành trước)3. 0. 03. 02. 2. 62. 2. 62. 2/3. 0

Phiên bản và DBMS được hỗ trợ


  
    
    
  
09 được thử nghiệm với 2 phiên bản phụ mới nhất của

  
    
    
  
12 và

  
    
    
  
13. Các phiên bản cũ hơn có thể tương thích nhưng không được hỗ trợ hoặc thử nghiệm chính thức. Các phiên bản được hỗ trợ hiện tại là

  • mysql 8. 0
  • mysql 5. 7
  • MariaDB 10. 4
  • MariaDB 10. 3

Lịch trình và Lộ trình

Trạng thái quan trọng Ngày phát hành3. 0. 0Tính năng khóaSoon3. 0. 0-rc2Đã công bố2019-11-043. 0. 0-rc1Đã phát hành2019-10-062. 2. 6Đã phát hành2019-10-152. 2. 0Đã phát hành2019-02-072. 1. 4Đã phát hành2018-11-29

Bản dựng hàng đêm

Để sử dụng các bản dựng hàng đêm từ nguồn cấp dữ liệu MyGet của chúng tôi, hãy thêm tệp

show variables like 'character_set_database';
0 vào thư mục gốc giải pháp của bạn với các nội dung sau


  
    
    
  

Bắt đầu

1. Bộ ký tự máy chủ được đề xuất

Chúng tôi khuyên bạn nên đặt

show variables like 'character_set_database';
1 làm bộ ký tự mặc định cho cơ sở dữ liệu MySQL của mình. Câu lệnh sau sẽ kiểm tra bộ ký tự DB của bạn

show variables like 'character_set_database';

2. Cấu hình CSPROJ

Đảm bảo rằng tệp

show variables like 'character_set_database';
2 của bạn có các tham chiếu sau


  
    Exe
    netcoreapp2.2
  

  
    
    
  
  

3. Cấu hình dịch vụ

Thêm


  
    
    
  
09 vào cấu hình dịch vụ trong tệp
show variables like 'character_set_database';
4 của bạn

using System;
using Microsoft.EntityFrameworkCore;
using Pomelo.EntityFrameworkCore.MySql.Infrastructure;

namespace YourNamespace // replace "YourNamespace" with the namespace of your application
{
    public class Startup
    {
        public void ConfigureServices(IServiceCollection services)
        {
            // other service configurations go here
            services.AddDbContextPool( // replace "YourDbContext" with the class name of your DbContext
                options => options.UseMySql("Server=localhost;Database=ef;User=root;Password=123456;", // replace with your Connection String
                    mySqlOptions =>
                    {
                        mySqlOptions.ServerVersion(new Version(5, 7, 17), ServerType.MySql); // replace with your Server Version and Type
                    }
            ));
        }
    }
}

Xem Trang Wiki Tùy chọn Cấu hình của chúng tôi để biết danh sách đầy đủ các tùy chọn được hỗ trợ

4. Ứng dụng mẫu

Kiểm tra Kiểm tra tích hợp của chúng tôi để biết kho lưu trữ ví dụ bao gồm Ứng dụng MVC

5. Đọc Tài liệu cốt lõi của EF

Tham khảo Tài liệu EF Core của Microsoft để biết hướng dẫn chi tiết và các ví dụ về cách sử dụng EF Core

Giàn giáo / Kỹ thuật đảo ngược

Sử dụng công cụ EF Core để thực thi các lệnh giàn giáo

________số 8

Đóng góp

Một trong những cách dễ dàng nhất để đóng góp là báo cáo các vấn đề và tham gia thảo luận về các vấn đề đó. Bạn cũng có thể đóng góp bằng cách gửi yêu cầu kéo với các thay đổi mã và hỗ trợ kiểm tra

Trong bài học này, chúng tôi sẽ giải thích cách định cấu hình một dự án để sử dụng Entity Framework Core với cơ sở dữ liệu MySQL. Các hướng dẫn trong bài học này có thể được sử dụng cho bất kỳ ứng dụng nào bạn xây dựng để sử dụng EF Core với cơ sở dữ liệu MySQL

Đối với hướng dẫn này, chúng ta sẽ sử dụng ứng dụng Danh sách việc cần làm làm ví dụ và chúng ta sẽ bắt đầu từ nơi chúng ta đã dừng lại với ứng dụng Danh sách việc cần làm. sử dụng


  
    
    
  
15 để giao tiếp với cơ sở dữ liệu MySQL. Điều đó có nghĩa là hướng dẫn này sẽ bao gồm các hướng dẫn về cách xóa

  
    
    
  
15 và cách cập nhật các phương thức tùy chỉnh mà chúng tôi đã tạo trong bài tập về nhà cuối tuần để giao tiếp với cơ sở dữ liệu MySQL của chúng tôi. Như mọi khi, bạn có thể viết mã lâu với những bài học này hoặc chỉ cần đọc qua chúng. Chúng tôi sẽ cung cấp các liên kết đến một repo ví dụ khi cần và ở phần cuối của hướng dẫn

Thiết lập dự án


Thêm và loại bỏ các phụ thuộc

Bỏ cái cũ và với cái mới. Chúng tôi sẽ bắt đầu bằng cách thêm các phụ thuộc bổ sung mà chúng tôi sẽ cần cho dự án EF Core này. Chuyển đến thư mục gốc của dự án sản xuất (

$ dotnet remove package MySqlConnector
0) qua thiết bị đầu cuối và thêm các phụ thuộc sau


  
    
    
  
0

Lưu ý một trong số này không bắt đầu với Microsoft. Đó là bởi vì

$ dotnet remove package MySqlConnector
1 thực sự là một gói của bên thứ ba có thể được tải xuống từ cùng một nguồn với các gói chính thức của Microsoft. Xem Repo GitHub chính thức của Entity Framework Core để tìm hiểu thêm

Hãy cũng loại bỏ gói


  
    
    
  
15 mà chúng tôi đã thêm vào cuối tuần

$ dotnet remove package MySqlConnector

Lưu ý cách MySqlConnector hiện đã biến mất khỏi. tập tin csproj. Lệnh

$ dotnet remove package MySqlConnector
3 cho phép chúng tôi loại bỏ các gói mà chúng tôi không cần khỏi dự án của mình một cách thuận tiện và sạch sẽ

Chuỗi kết nối cơ sở dữ liệu

Tiếp theo, chúng ta cần thêm chuỗi kết nối cơ sở dữ liệu vào ứng dụng của mình

Khi chúng tôi sử dụng gói MySqlConnector để giao tiếp với cơ sở dữ liệu, chúng tôi đã đặt chuỗi kết nối cơ sở dữ liệu của mình vào

$ dotnet remove package MySqlConnector
4 và tải nó trong quá trình tạo máy chủ ứng dụng web của chúng tôi trong
$ dotnet remove package MySqlConnector
5. Chúng tôi đã sử dụng
$ dotnet remove package MySqlConnector
4 để bảo vệ dữ liệu nhạy cảm trong chuỗi kết nối cơ sở dữ liệu của mình bằng cách thêm nó vào
$ dotnet remove package MySqlConnector
7 để nó không bao giờ bị theo dõi trong lịch sử Git của chúng tôi. Chúng tôi cũng bao gồm các hướng dẫn về cách tạo lại một
$ dotnet remove package MySqlConnector
4 trong READMEs dự án của chúng tôi

Chà, chúng tôi sẽ sử dụng

$ dotnet remove package MySqlConnector
4 theo cách tương tự để tải và bảo vệ chuỗi kết nối cơ sở dữ liệu của chúng tôi với EF Core. Vì vậy, nếu bạn đang theo dõi và cập nhật ứng dụng Danh sách việc cần làm của mình, chúng tôi không cần thực hiện thay đổi lớn nào với các quy trình xung quanh việc sử dụng
$ dotnet remove package MySqlConnector
4

Tất cả các dự án khác mà bạn tạo sẽ cần những thứ sau

  • $ dotnet remove package MySqlConnector
    
    4 được liệt kê trong
    $ dotnet remove package MySqlConnector
    
    7 và cam kết với lịch sử Git
show variables like 'character_set_database';
3
  • Hướng dẫn thiết lập trong

    show variables like 'character_set_database';
    33 của dự án giải thích cách tạo lại
    $ dotnet remove package MySqlConnector
    
    4, bao gồm vị trí của tệp (trong thư mục sản xuất của dự án) và nội dung của tệp

  • Và một

    show variables like 'character_set_database';
    35 với các nội dung sau, thay thế các giá trị sau bằng giá trị của riêng bạn

    • show variables like 'character_set_database';
      36 với tên người dùng của bạn
    • show variables like 'character_set_database';
      37 với mật khẩu của bạn
    • show variables like 'character_set_database';
      38 với tên cơ sở dữ liệu của bạn

Tên dự án. Giải pháp/Tên dự án/cài đặt ứng dụng. json

show variables like 'character_set_database';
0

Cập nhật tên cơ sở dữ liệu và tạo cơ sở dữ liệu mới

Chúng tôi khuyên bạn nên tạo cơ sở dữ liệu mới cho hướng dẫn sử dụng EF Core này để giao tiếp với cơ sở dữ liệu MySQL. Làm như vậy sẽ bảo vệ cơ sở dữ liệu mà chúng tôi đã thiết lập với phiên bản Danh sách việc cần làm sử dụng MySqlConnector. Để làm điều này, hãy làm theo các bước sau

  1. Cập nhật khóa
    show variables like 'character_set_database';
    39 trong chuỗi kết nối cơ sở dữ liệu trong
    $ dotnet remove package MySqlConnector
    
    4 thành
    show variables like 'character_set_database';
    01
  2. Sao chép cơ sở dữ liệu
    show variables like 'character_set_database';
    02 bằng cách xuất nó, sau đó nhập nó với tên mới là
    show variables like 'character_set_database';
    01. Để biết hướng dẫn chính xác về nhập và xuất cơ sở dữ liệu, hãy truy cập bài học này từ bài tập về nhà cuối tuần

Xóa show variables like 'character_set_database';04

Chúng tôi sẽ định cấu hình dự án của mình để sử dụng EF Core trong

$ dotnet remove package MySqlConnector
5. Trong quá trình này, chúng tôi sẽ thiết lập cơ sở dữ liệu MySQL của mình để chạy như một dịch vụ trong
$ dotnet remove package MySqlConnector
5. Do đó, chúng tôi không còn cần tệp
show variables like 'character_set_database';
07 có chứa lớp
show variables like 'character_set_database';
08 nữa. Bắt đầu bằng cách xóa tệp này khỏi dự án Danh sách việc cần làm của bạn

Loại bỏ những điều sau đây

ToDoList/Mô hình/DatabaseConfig. cs

show variables like 'character_set_database';
1

Tạo bối cảnh và thực thể cơ sở dữ liệu

Tiếp theo, chúng ta cần tạo một mô hình cơ sở dữ liệu và các bảng trong dự án của mình để Entity Framework Core sử dụng để ánh xạ các lớp và đối tượng C# của chúng ta tới các mục và bảng cơ sở dữ liệu MySQL và ngược lại. EF Core sử dụng thuật ngữ cụ thể cho các mô hình này

  • Một thực thể đại diện cho một bảng cơ sở dữ liệu (với các cột và loại) dưới dạng mô hình C# trong ứng dụng của chúng tôi. Các thực thể trong ứng dụng To Do List của chúng tôi được mô tả trong
    show variables like 'character_set_database';
    09 và
    show variables like 'character_set_database';
    10
  • Bối cảnh cơ sở dữ liệu đại diện cho toàn bộ cơ sở dữ liệu (với tất cả các bảng) dưới dạng mô hình trong ứng dụng của chúng tôi. Mô hình luôn được gọi là
    show variables like 'character_set_database';
    11 và nó mở rộng chức năng của lớp
    show variables like 'character_set_database';
    12 của EF Core. Lớp
    show variables like 'character_set_database';
    12 đại diện cho một phiên với cơ sở dữ liệu MySQL của chúng tôi có thể được sử dụng để truy vấn và lưu các phiên bản của các thực thể của chúng tôi (
    show variables like 'character_set_database';
    14s và
    show variables like 'character_set_database';
    15s). Mỗi khi chúng tôi muốn tham chiếu cơ sở dữ liệu trong một ứng dụng, chúng tôi sẽ làm như vậy bằng cách sử dụng một thể hiện của lớp
    show variables like 'character_set_database';
    12

Chúng tôi không phải thay đổi bất cứ điều gì với

show variables like 'character_set_database';
09 hoặc
show variables like 'character_set_database';
10 để biến những mô hình đó thành các thực thể EF Core. Chúng tôi liệt kê các thực thể trong ứng dụng của mình bằng cách xác định chúng trong ngữ cảnh cơ sở dữ liệu. Vì vậy, hãy tạo điều đó tiếp theo

Trong

show variables like 'character_set_database';
19, tạo một tệp mới có tên là

  
    Exe
    netcoreapp2.2
  

  
    
    
  
  
30 và thêm đoạn mã sau vào đó

ToDoList/Mô hình/ToDoList bối cảnh. cs


  
    Exe
    netcoreapp2.2
  

  
    
    
  
  
3

Hãy xem qua những gì đang xảy ra ở đây

  • Lớp

    
      
        Exe
        netcoreapp2.2
      
    
      
        
        
      
      
    
    31 của chúng tôi kế thừa (hoặc "mở rộng") từ lớp
    show variables like 'character_set_database';
    12 của EF Core. Điều này đảm bảo nó bao gồm tất cả chức năng
    show variables like 'character_set_database';
    12 tích hợp sẵn mặc định

  • Lớp

    
      
        Exe
        netcoreapp2.2
      
    
      
        
        
      
      
    
    31 chứa một thuộc tính kiểu
    
      
        Exe
        netcoreapp2.2
      
    
      
        
        
      
      
    
    35 có tên là
    
      
        Exe
        netcoreapp2.2
      
    
      
        
        
      
      
    
    36 đại diện cho bảng
    
      
        Exe
        netcoreapp2.2
      
    
      
        
        
      
      
    
    37 trong cơ sở dữ liệu của chúng ta. Với thuộc tính
    
      
        Exe
        netcoreapp2.2
      
    
      
        
        
      
      
    
    36 này, chúng ta đã khai báo một thực thể có tên là
    
      
        Exe
        netcoreapp2.2
      
    
      
        
        
      
      
    
    36 trong ngữ cảnh cơ sở dữ liệu To Do List của chúng ta

    • Lưu ý rằng để
      
        
          Exe
          netcoreapp2.2
        
      
        
          
          
        
        
      
      35 tạo một thực thể cho một đối tượng C# cụ thể trong ứng dụng của chúng ta, chúng ta luôn cần đảm bảo bao gồm tên lớp (
      show variables like 'character_set_database';
      14) trong dấu ngoặc nhọn (
      show variables like 'character_set_database';
      62) sau
      
        
          Exe
          netcoreapp2.2
        
      
        
          
          
        
        
      
      35
  • Chúng tôi cũng bao gồm một hàm tạo kế thừa hành vi của hàm tạo lớp cha của nó. Vì

    
      
        Exe
        netcoreapp2.2
      
    
      
        
        
      
      
    
    31 là một phần mở rộng của lớp
    show variables like 'character_set_database';
    12, chúng tôi đang gọi hành vi của hàm tạo từ lớp đó;

  • Trong hàm tạo

    
      
        Exe
        netcoreapp2.2
      
    
      
        
        
      
      
    
    31, chúng tôi liệt kê một tham số thuộc loại
    show variables like 'character_set_database';
    69 được gọi là
    using System;
    using Microsoft.EntityFrameworkCore;
    using Pomelo.EntityFrameworkCore.MySql.Infrastructure;
    
    namespace YourNamespace // replace "YourNamespace" with the namespace of your application
    {
        public class Startup
        {
            public void ConfigureServices(IServiceCollection services)
            {
                // other service configurations go here
                services.AddDbContextPool( // replace "YourDbContext" with the class name of your DbContext
                    options => options.UseMySql("Server=localhost;Database=ef;User=root;Password=123456;", // replace with your Connection String
                        mySqlOptions =>
                        {
                            mySqlOptions.ServerVersion(new Version(5, 7, 17), ServerType.MySql); // replace with your Server Version and Type
                        }
                ));
            }
        }
    }
    40. Đối số cho tham số này sẽ được chuyển qua nội xạ phụ thuộc từ
    $ dotnet remove package MySqlConnector
    
    5 khi ứng dụng của chúng tôi được xây dựng và chạy. Lưu ý rằng chúng tôi chưa thiết lập bất kỳ thứ gì trong
    $ dotnet remove package MySqlConnector
    
    5 — cả cơ sở dữ liệu của chúng tôi dưới dạng dịch vụ hoặc các tùy chọn ngữ cảnh cơ sở dữ liệu của chúng tôi. Chúng tôi sẽ làm điều đó tiếp theo

Định cấu hình $ dotnet remove package MySqlConnector 5 để chạy Cơ sở dữ liệu của chúng tôi dưới dạng Dịch vụ

Tiếp theo, chúng tôi sẽ cập nhật

$ dotnet remove package MySqlConnector
5 để thực hiện hai việc

  1. Định cấu hình
    using System;
    using Microsoft.EntityFrameworkCore;
    using Pomelo.EntityFrameworkCore.MySql.Infrastructure;
    
    namespace YourNamespace // replace "YourNamespace" with the namespace of your application
    {
        public class Startup
        {
            public void ConfigureServices(IServiceCollection services)
            {
                // other service configurations go here
                services.AddDbContextPool( // replace "YourDbContext" with the class name of your DbContext
                    options => options.UseMySql("Server=localhost;Database=ef;User=root;Password=123456;", // replace with your Connection String
                        mySqlOptions =>
                        {
                            mySqlOptions.ServerVersion(new Version(5, 7, 17), ServerType.MySql); // replace with your Server Version and Type
                        }
                ));
            }
        }
    }
    45 của chúng tôi để thiết lập dịch vụ cho cơ sở dữ liệu của chúng tôi
  2. Định cấu hình cơ sở dữ liệu MySQL của chúng tôi để sử dụng chuỗi kết nối cơ sở dữ liệu trong
    $ dotnet remove package MySqlConnector
    
    4

Hãy xem mã mới trong

$ dotnet remove package MySqlConnector
5. Chúng tôi sẽ hiển thị toàn bộ tập tin

show variables like 'character_set_database';
6

Hãy giải thích các bản cập nhật

  • Đầu tiên lưu ý rằng chúng tôi có một chỉ thị

    using System;
    using Microsoft.EntityFrameworkCore;
    using Pomelo.EntityFrameworkCore.MySql.Infrastructure;
    
    namespace YourNamespace // replace "YourNamespace" with the namespace of your application
    {
        public class Startup
        {
            public void ConfigureServices(IServiceCollection services)
            {
                // other service configurations go here
                services.AddDbContextPool( // replace "YourDbContext" with the class name of your DbContext
                    options => options.UseMySql("Server=localhost;Database=ef;User=root;Password=123456;", // replace with your Connection String
                        mySqlOptions =>
                        {
                            mySqlOptions.ServerVersion(new Version(5, 7, 17), ServerType.MySql); // replace with your Server Version and Type
                        }
                ));
            }
        }
    }
    48 mới.
    using System;
    using Microsoft.EntityFrameworkCore;
    using Pomelo.EntityFrameworkCore.MySql.Infrastructure;
    
    namespace YourNamespace // replace "YourNamespace" with the namespace of your application
    {
        public class Startup
        {
            public void ConfigureServices(IServiceCollection services)
            {
                // other service configurations go here
                services.AddDbContextPool( // replace "YourDbContext" with the class name of your DbContext
                    options => options.UseMySql("Server=localhost;Database=ef;User=root;Password=123456;", // replace with your Connection String
                        mySqlOptions =>
                        {
                            mySqlOptions.ServerVersion(new Version(5, 7, 17), ServerType.MySql); // replace with your Server Version and Type
                        }
                ));
            }
        }
    }
    49 Chỉ thị
    using System;
    using Microsoft.EntityFrameworkCore;
    using Pomelo.EntityFrameworkCore.MySql.Infrastructure;
    
    namespace YourNamespace // replace "YourNamespace" with the namespace of your application
    {
        public class Startup
        {
            public void ConfigureServices(IServiceCollection services)
            {
                // other service configurations go here
                services.AddDbContextPool( // replace "YourDbContext" with the class name of your DbContext
                    options => options.UseMySql("Server=localhost;Database=ef;User=root;Password=123456;", // replace with your Connection String
                        mySqlOptions =>
                        {
                            mySqlOptions.ServerVersion(new Version(5, 7, 17), ServerType.MySql); // replace with your Server Version and Type
                        }
                ));
            }
        }
    }
    48 này nhập phương thức
    
      
        
        
      
    
    151 từ không gian tên
    
      
        
        
      
    
    152. Chúng tôi cũng duy trì
    
      
        
        
      
    
    153, bởi vì chúng tôi sử dụng mô hình
    
      
        Exe
        netcoreapp2.2
      
    
      
        
        
      
      
    
    31 trong
    $ dotnet remove package MySqlConnector
    
    5

  • Với

    
      
        
        
      
    
    156, chúng tôi thêm EF Core làm dịch vụ cho ứng dụng Danh sách việc cần làm của chúng tôi. Chúng tôi chỉ định
    
      
        Exe
        netcoreapp2.2
      
    
      
        
        
      
      
    
    31 là loại bối cảnh cơ sở dữ liệu EF Core mà chúng tôi muốn thiết lập. Hãy nhớ rằng
    
      
        Exe
        netcoreapp2.2
      
    
      
        
        
      
      
    
    31 là đại diện cho cơ sở dữ liệu MySQL của chúng tôi

  • Là đối số cho phương thức

    
      
        
        
      
    
    159, chúng tôi định cấu hình các tùy chọn ngữ cảnh cơ sở dữ liệu Danh sách công việc của chúng tôi

    • Chúng tôi tuyên bố rằng chúng tôi muốn sử dụng cơ sở dữ liệu MySQL với phương pháp
      
        
          
          
        
      
      151
    • Chúng tôi chuyển hai đối số cho phương thức
      
        
          
          
        
      
      151
    • Chuỗi kết nối cơ sở dữ liệu trong
      $ dotnet remove package MySqlConnector
      
      4, mà chúng tôi nhận được khi truy cập vào
      
        
          
          
        
      
      153. Hãy nhớ rằng
      $ dotnet remove package MySqlConnector
      
      4 được tải ngầm khi chúng tôi bắt đầu quá trình xây dựng máy chủ ứng dụng web của mình bằng cách chạy
      
        
          
          
        
      
      155
    • Phiên bản của máy chủ MySQL mà chúng tôi đặt thành tự động phát hiện
    • Lưu ý rằng cú pháp
      
        
          
          
        
      
      156 trong
      
        
          
          
        
      
      157 tạo biểu thức lambda. Nói tóm lại, biểu thức lambda chỉ là một cách để viết một hàm ẩn danh theo cách cô đọng. Các biểu thức lambda được sử dụng trong nhiều ngôn ngữ và tương tự như các hàm mũi tên trong JavaScript. Để biết thêm thông tin về lambdas, hãy xem tài liệu của Microsoft

Với việc EF Core hiện được định cấu hình để chạy dưới dạng dịch vụ, EF Core sẽ tự động xử lý việc mở và đóng kết nối cơ sở dữ liệu mỗi khi chúng tôi truy vấn cơ sở dữ liệu của mình. khá gọn gàng

Lưu ý rằng mặc dù chúng tôi đặt tên ngữ cảnh cơ sở dữ liệu EF Core của mình là


  
    
    
  
158, nhưng tên của cơ sở dữ liệu thực tế vẫn được đặt trong
$ dotnet remove package MySqlConnector
4

Và cuối cùng, nếu bạn muốn đọc thêm về cách định cấu hình EF Core như một dịch vụ, hãy truy cập tài liệu Cấu hình DbContext với Dependency Injection và cuộn xuống phần "Sử dụng DbContext với Dependency injection"

Cập nhật lên Quy ước đặt tên cốt lõi của EF


Để EF Core ánh xạ các mô hình C# của chúng tôi tới cơ sở dữ liệu MySQL, chúng tôi cần tuân theo các quy ước đặt tên cụ thể, chính xác là hai quy ước

  1. Theo mặc định, EF Core ánh xạ các thuộc tính thực thể (thuộc tính của các mô hình C# của chúng tôi) tới các cột cơ sở dữ liệu có cùng tên. Ánh xạ này phân biệt chữ hoa chữ thường. Do đó, tên cột trong bảng cơ sở dữ liệu của chúng tôi phải khớp với tên thuộc tính và trường hợp thuộc tính của mô hình của chúng tôi

  2. Cũng cần lưu ý rằng Entity Framework Core cũng nhận ra khóa chính của thực thể thông qua quy ước đặt tên. để một thuộc tính được công nhận là khóa chính, chúng ta cần đặt tên cho thuộc tính là

    $ dotnet remove package MySqlConnector
    
    00 hoặc
    $ dotnet remove package MySqlConnector
    
    01. Chúng tôi sẽ thực hiện theo cách thứ hai, đặt tên cho các khóa chính của chúng tôi là
    $ dotnet remove package MySqlConnector
    
    01

Để đáp ứng các quy ước đặt tên này, chúng tôi cần truy cập cơ sở dữ liệu

show variables like 'character_set_database';
01 của mình và cập nhật tên cột theo cách sau

  • Sử dụng MySQL Workbench, tìm bảng
    
      
        Exe
        netcoreapp2.2
      
    
      
        
        
      
      
    
    37 trong Bộ điều hướng, nhấp chuột phải và chọn Bảng thay đổi
    • Đổi tên của cột
      $ dotnet remove package MySqlConnector
      
      05 thành
      $ dotnet remove package MySqlConnector
      
      06
    • Đổi tên của cột
      $ dotnet remove package MySqlConnector
      
      07 thành
      $ dotnet remove package MySqlConnector
      
      08
    • Nhấp vào Áp dụng

Tiếp theo, hãy mở

show variables like 'character_set_database';
09 trong dự án
$ dotnet remove package MySqlConnector
0 và cập nhật thuộc tính
$ dotnet remove package MySqlConnector
00 của mô hình
show variables like 'character_set_database';
14 của bạn thành
$ dotnet remove package MySqlConnector
06. Mô hình
show variables like 'character_set_database';
14 bây giờ trông như thế này

using System;
using Microsoft.EntityFrameworkCore;
using Pomelo.EntityFrameworkCore.MySql.Infrastructure;

namespace YourNamespace // replace "YourNamespace" with the namespace of your application
{
    public class Startup
    {
        public void ConfigureServices(IServiceCollection services)
        {
            // other service configurations go here
            services.AddDbContextPool( // replace "YourDbContext" with the class name of your DbContext
                options => options.UseMySql("Server=localhost;Database=ef;User=root;Password=123456;", // replace with your Connection String
                    mySqlOptions =>
                    {
                        mySqlOptions.ServerVersion(new Version(5, 7, 17), ServerType.MySql); // replace with your Server Version and Type
                    }
            ));
        }
    }
}
4

Lưu ý rằng chúng ta sẽ tuân theo các quy ước đặt tên này khi thiết lập cơ sở dữ liệu và thực thể kể từ bây giờ

Tài liệu tham khảo kho lưu trữ

Theo liên kết bên dưới để xem phiên bản mẫu của ứng dụng To Do List sẽ trông như thế nào vào thời điểm này. Lưu ý rằng đây là một liên kết đến một nhánh cụ thể trong kho lưu trữ

Entity Framework có hoạt động với MySQL không?

Phương pháp Code First cho phép bạn xác định mô hình thực thể trong mã, tạo cơ sở dữ liệu từ mô hình, sau đó thêm dữ liệu vào cơ sở dữ liệu. MySQL Connector/NET tương thích với nhiều phiên bản Entity Framework Core .

Microsoft EntityFrameworkCore là gì?

Entity Framework (EF) Core là một phiên bản nhẹ, có thể mở rộng, nguồn mở và đa nền tảng của công nghệ truy cập dữ liệu Entity Framework phổ biến . EF Core có thể phục vụ như một trình ánh xạ quan hệ đối tượng (O/RM), mà. cho phép. NET để làm việc với cơ sở dữ liệu bằng cách sử dụng. đối tượng NET.

Gói nào sẽ khiến gói quan hệ Microsoft EntityFrameworkCore được thêm vào thông qua phần phụ thuộc NuGet?

Yêu cầu NuGet 3. 6 hoặc cao hơn. Lệnh này dự định sẽ được sử dụng trong Bảng điều khiển quản lý gói trong Visual Studio, vì nó sử dụng phiên bản Gói cài đặt của mô-đun NuGet. . Gói NuGet (2. 3K)

Chạy lệnh giàn giáo DbContext ở đâu?

Có thể thực hiện việc này bằng cách sử dụng lệnh Scaffold-DbContext của công cụ EF Core Package Manager Console (PMC) hoặc giàn giáo dbcontext dotnet ef . NET Công cụ giao diện dòng lệnh (CLI).