Tôi đang sử dụng API web cho một dự án mà tôi đang thực hiện, vấn đề là khi tôi cố gắng kết nối với ứng dụng MySQL In, tôi gặp phải lỗi này
Một hoặc nhiều lỗi xảy ra. [Một nỗ lực đã được thực hiện để truy cập vào một ổ cắm theo cách bị cấm bởi quyền truy cập của nó. ]
Tôi đã nhận được chuỗi kết nối từ MYSQLCONNSTR_localdb. tập tin ini
Nó trông như thế này. Cơ sở dữ liệu=localdb;Nguồn dữ liệu=127. 0. 0. 1;Id người dùng=azure;Mật khẩu=mật khẩu
Tôi đang sử dụng MySql. Gói data kết nối
Tôi khá mới với Azure, đây chỉ là điều tôi cần làm cho dự án của mình. Tôi hy vọng tôi có thể nhận được một số giúp đỡ. Cảm ơn trước
Trong bài viết này, tôi sẽ hướng dẫn từng bước cách sử dụng đúng Entity Framework Core trong ASP của bạn. NET Core với Cơ sở dữ liệu MySql và
using Microsoft.EntityFrameworkCore; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace CRUDWebAPIWithMySQL.Models { public class StudentDetailContext : DbContext { public StudentDetailContext[DbContextOptions options] : base[options] { } public DbSet StudentDetails { get; set; } //Table Name StudentDetails } }0 truyền thống. Tất cả các hành động đã được thực hiện trong Visual Studio 2019 trên máy Windows 10 với máy chủ MySql đã cài đặt. Trong ví dụ sử dụng ASP. NET Core Web API dự án [. NET lõi v3. 1]
Trước hết bạn phải biết một số câu hỏi cơ bản. Tôi đã thảo luận về chúng dưới đây
ASP là gì. NET lõi?
ASP. NET Core là một framework mã nguồn mở, đa nền tảng, hiệu suất cao để xây dựng các ứng dụng kết nối Internet, dựa trên đám mây hiện đại. Với ASP. NET Core, bạn có thể. Xây dựng các ứng dụng và dịch vụ web, ứng dụng IoT và phụ trợ di động. Sử dụng các công cụ phát triển yêu thích của bạn trên Windows, macOS và Linux
API Web là gì?
API Web là giao diện lập trình ứng dụng cho máy chủ web hoặc trình duyệt web. Đó là một khái niệm phát triển web, thường được giới hạn ở phía máy khách của ứng dụng web [bao gồm mọi khung web đang được sử dụng] và do đó thường không bao gồm các chi tiết triển khai trình duyệt hoặc máy chủ web như SAPI hoặc API trừ khi ứng dụng web từ xa có thể truy cập công khai
Khung thực thể là gì?
Entity Framework là một Trình ánh xạ quan hệ đối tượng [ORM], là một loại công cụ giúp đơn giản hóa ánh xạ giữa các đối tượng trong phần mềm của bạn tới các bảng và cột của cơ sở dữ liệu quan hệ
ORM là gì?
Ánh xạ quan hệ đối tượng trong khoa học máy tính là một kỹ thuật lập trình để chuyển đổi dữ liệu giữa các hệ thống loại không tương thích bằng ngôn ngữ lập trình hướng đối tượng. Trên thực tế, điều này tạo ra một "cơ sở dữ liệu đối tượng ảo" có thể được sử dụng từ bên trong ngôn ngữ lập trình
MySQL là gì?
MySQL là một cơ sở dữ liệu quan hệ mã nguồn mở. MySQL là nền tảng chéo có nghĩa là nó chạy trên một số nền tảng khác nhau như Windows, Linux và Mac OS, v.v.
Lõi EF trong ASP. NET Core Web API với Cơ sở dữ liệu MySql
Hướng dẫn này giải thích cách thiết lập ASP sẵn sàng sản xuất. NET Core Web API sử dụng Entity Framework với Cơ sở dữ liệu MySQL. API Web của chúng tôi có thể thực hiện các hoạt động CRUD cơ bản
Trong bài viết này, bạn sẽ học cách
- Tạo một ASP đơn giản. NET Core Web API thực hiện các Hoạt động CRUD bằng Entity Framework [với My SQL Server]
using Microsoft.EntityFrameworkCore; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace CRUDWebAPIWithMySQL.Models { public class StudentDetailContext : DbContext { public StudentDetailContext[DbContextOptions options] : base[options] { } public DbSet StudentDetails { get; set; } //Table Name StudentDetails } }
0 với Mysql- Chạy và tương tác với nó
công cụ bắt buộc
- ASP. NET lõi
- Studio trực quan 2019
- Bàn làm việc MySQL
- Người phát thơ
Bước 1. Cài đặt MySQL
Làm theo các bước để cài đặt MySQL trong windows 10 của bạn
Tải xuống MySQL
Tải xuống Trình cài đặt MySQL chung có sẵn tại liên kết này. MySQL Workbench có thể được cài đặt bằng gói Windows MSI Installer. Gói MSI mang tên
using Microsoft.EntityFrameworkCore; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace CRUDWebAPIWithMySQL.Models { public class StudentDetailContext : DbContext { public StudentDetailContext[DbContextOptions options] : base[options] { } public DbSet StudentDetails { get; set; } //Table Name StudentDetails } }2, trong đó phiên bản cho biết số phiên bản MySQL Workbench và cung cấp kiến trúc bản dựng [winx64]
Ứng dụng MySQL Installer có thể cài đặt, nâng cấp và quản lý hầu hết các sản phẩm MySQL, bao gồm cả MySQL Workbench
Thiết lập My SQL bao gồm MySQL Workbench
- Chạy tệp
using Microsoft.EntityFrameworkCore; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace CRUDWebAPIWithMySQL.Models { public class StudentDetailContext : DbContext { public StudentDetailContext[DbContextOptions options] : base[options] { } public DbSet StudentDetails { get; set; } //Table Name StudentDetails } }
3 - Chọn
using Microsoft.EntityFrameworkCore; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace CRUDWebAPIWithMySQL.Models { public class StudentDetailContext : DbContext { public StudentDetailContext[DbContextOptions options] : base[options] { } public DbSet StudentDetails { get; set; } //Table Name StudentDetails } }
4 hoặcusing Microsoft.EntityFrameworkCore; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace CRUDWebAPIWithMySQL.Models { public class StudentDetailContext : DbContext { public StudentDetailContext[DbContextOptions options] : base[options] { } public DbSet StudentDetails { get; set; } //Table Name StudentDetails } }
5
- Sau đó Chọn
using Microsoft.EntityFrameworkCore; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace CRUDWebAPIWithMySQL.Models { public class StudentDetailContext : DbContext { public StudentDetailContext[DbContextOptions options] : base[options] { } public DbSet StudentDetails { get; set; } //Table Name StudentDetails } }
6 và nhấp vàousing Microsoft.EntityFrameworkCore; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace CRUDWebAPIWithMySQL.Models { public class StudentDetailContext : DbContext { public StudentDetailContext[DbContextOptions options] : base[options] { } public DbSet StudentDetails { get; set; } //Table Name StudentDetails } }
7
- Sau đó nhấp vào
using Microsoft.EntityFrameworkCore; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace CRUDWebAPIWithMySQL.Models { public class StudentDetailContext : DbContext { public StudentDetailContext[DbContextOptions options] : base[options] { } public DbSet StudentDetails { get; set; } //Table Name StudentDetails } }
8 sau khi tải xuống tất cả rồi chọnusing Microsoft.EntityFrameworkCore; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace CRUDWebAPIWithMySQL.Models { public class StudentDetailContext : DbContext { public StudentDetailContext[DbContextOptions options] : base[options] { } public DbSet StudentDetails { get; set; } //Table Name StudentDetails } }
6-->using Microsoft.EntityFrameworkCore; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace CRUDWebAPIWithMySQL.Models { public class StudentDetailContext : DbContext { public StudentDetailContext[DbContextOptions options] : base[options] { } public DbSet StudentDetails { get; set; } //Table Name StudentDetails } }
6
- Định cấu hình
"ConnectionStrings": { "DBConn": "Server=;port=3306;Database=studentdb;User Id=root;Password=1234;" }
1 thành"ConnectionStrings": { "DBConn": "Server=;port=3306;Database=studentdb;User Id=root;Password=1234;" }
2, cấu hình tiếp theo hiển thị bên dưới
- Định cấu hình
"ConnectionStrings": { "DBConn": "Server=;port=3306;Database=studentdb;User Id=root;Password=1234;" }
3. Tại đây, đặt mật khẩu của bạn cho người dùng"ConnectionStrings": { "DBConn": "Server=;port=3306;Database=studentdb;User Id=root;Password=1234;" }
4 - Định cấu hình
"ConnectionStrings": { "DBConn": "Server=;port=3306;Database=studentdb;User Id=root;Password=1234;" }
5, giữ nguyên như mặc định
Tiếp theo-->
- Sau đó nhấp vào
using Microsoft.EntityFrameworkCore; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace CRUDWebAPIWithMySQL.Models { public class StudentDetailContext : DbContext { public StudentDetailContext[DbContextOptions options] : base[options] { } public DbSet StudentDetails { get; set; } //Table Name StudentDetails } }
8 --->"ConnectionStrings": { "DBConn": "Server=;port=3306;Database=studentdb;User Id=root;Password=1234;" }
7
- Sau đó bắt đầu
"ConnectionStrings": { "DBConn": "Server=;port=3306;Database=studentdb;User Id=root;Password=1234;" }
8
bạn được thiết lập
Bước 2. Tạo cơ sở dữ liệu bằng MySQL Workbench
Bạn có thể sử dụng MySQL Workbench GUI để tạo cơ sở dữ liệu. Bạn cũng có thể tạo cơ sở dữ liệu theo chương trình nhưng đây là cách thực hiện thông qua GUI
Trong ví dụ sau, chúng tôi tạo một cơ sở dữ liệu mới có tên "StudentDB"
- Nhấp vào kết nối của bạn và đăng nhập tài khoản của bạn bằng mật khẩu
Nhấp vào biểu tượng để tạo lược đồ mới [bạn sẽ tìm thấy biểu tượng này trên thanh công cụ Workbench]
Nhập tên lược đồ [trong trường hợp này là StudentDB] và đối chiếu mặc định, sau đó nhấp vào nút Áp dụng
- Bạn được nhắc xem lại câu lệnh SQL sẽ được chạy để tạo cơ sở dữ liệu. Để chạy câu lệnh [và tạo cơ sở dữ liệu], bấm Áp dụng
- Bạn sẽ thấy màn hình sau khi cơ sở dữ liệu đã được tạo
- Cơ sở dữ liệu hiện đã được tạo. Bây giờ bạn sẽ thấy cơ sở dữ liệu mới của mình được liệt kê trong tab
"ConnectionStrings": { "DBConn": "Server=;port=3306;Database=studentdb;User Id=root;Password=1234;" }
9 ở khung bên trái
Bước 3. Tạo một ASP. NET Core Web API
- Từ menu Tệp, chọn Mới > Dự án
- Chọn ASP. NET Core Web Application và nhấp vào Tiếp theo
- Đặt tên cho dự án là
"ConnectionStrings": { "DBConn": "Server=localhost;port=3306;Database=studentdb;User Id=root;Password=1234;" }
0 và nhấp vào Tạo
- Trong phần Tạo một ASP mới. NET Core Web Application, xác nhận rằng. NET lõi và ASP. NET lõi 3. 1 được chọn. Chọn mẫu API và nhấp vào Tạo
N. B. Bỏ chọn cấu hình cho Https Nhấn
"ConnectionStrings": { "DBConn": "Server=localhost;port=3306;Database=studentdb;User Id=root;Password=1234;" }1 để chạy ứng dụng
Bước 4. Thêm phụ thuộc vào ASP. NET lõi
Trước khi chúng tôi bắt đầu dự án của chúng tôi cần một vài phụ thuộc. Chúng tôi sẽ thêm tất cả chúng bằng Trình quản lý gói NuGet
Danh sách các gói dưới đây
- Microsoft. Thực thểKhungLõi
- bưởi. Thực thểKhungLõi. MySql
- Microsoft. Thực thểKhungLõi. Công cụ
- Microsoft. Thực thểKhungLõi. Thiết kế
Tôi sử dụng nhà cung cấp Polemo thay vì nhà cung cấp Oracle [MySql. Dữ liệu. EntityFrameworkCore] vì trình kết nối của Oracle không hỗ trợ di chuyển EF, nên các mối quan hệ ở đó chỉ có thể được triển khai trong Fluent. API. Công cụ EF tôi đã cài đặt chỉ để đơn giản hóa việc nhập lệnh trong Bảng điều khiển quản lý gói [Bước cuối cùng của câu chuyện này]
Bước 5. Thêm mô hình và bối cảnh cơ sở dữ liệu
Để bắt đầu, chúng tôi cần các Mô hình EF và DbContext cơ bản. Trong ví dụ này, tôi sẽ tạo các mô hình đơn giản với người dùng và thú cưng của anh ấy. Ví dụ này cũng sẽ minh họa việc tự động tạo các mối quan hệ bằng Entity Framework. Đầu tiên tạo một thư mục có tên
"ConnectionStrings": { "DBConn": "Server=localhost;port=3306;Database=studentdb;User Id=root;Password=1234;" }2, sau đó tạo
"ConnectionStrings": { "DBConn": "Server=localhost;port=3306;Database=studentdb;User Id=root;Password=1234;" }3 Lớp người mẫu
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; namespace CRUDWebAPIWithMySQL.Models { public class StudentDetail { [Key] [DatabaseGenerated[DatabaseGeneratedOption.Identity]] public int ID { get; set; } [Required] [Column[TypeName = "nvarchar[100]"]] public string Name { get; set; } [Required] [Column[TypeName = "varchar[11]"]] public string Phone_Number { get; set; } [Required] [Column[TypeName = "varchar[10]"]] public string Birth_Date { get; set; } } }
Sau đó, tạo tệp DBContext có tên
"ConnectionStrings": { "DBConn": "Server=localhost;port=3306;Database=studentdb;User Id=root;Password=1234;" }4
using Microsoft.EntityFrameworkCore; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace CRUDWebAPIWithMySQL.Models { public class StudentDetailContext : DbContext { public StudentDetailContext[DbContextOptions options] : base[options] { } public DbSet StudentDetails { get; set; } //Table Name StudentDetails } }
Bước 6. Định cấu hình tiêm phụ thuộc
Trong ví dụ này, tôi sẽ lưu chuỗi kết nối của chúng ta trong tệp
"ConnectionStrings": { "DBConn": "Server=localhost;port=3306;Database=studentdb;User Id=root;Password=1234;" }5, vì nó hữu ích khi làm việc với Git và các biện pháp Bảo mật
"ConnectionStrings": { "DBConn": "Server=;port=3306;Database=studentdb;User Id=root;Password=1234;" }
Đây là của chúng tôi. Chúng tôi nhận được IP Máy chủ mySQL và số cổng từ
"ConnectionStrings": { "DBConn": "Server=localhost;port=3306;Database=studentdb;User Id=root;Password=1234;" }6
"ConnectionStrings": { "DBConn": "Server=localhost;port=3306;Database=studentdb;User Id=root;Password=1234;" }
Bây giờ chúng tôi phải thông báo về bối cảnh cơ sở dữ liệu hiện có của chúng tôi theo phương pháp
"ConnectionStrings": { "DBConn": "Server=localhost;port=3306;Database=studentdb;User Id=root;Password=1234;" }7 của
"ConnectionStrings": { "DBConn": "Server=localhost;port=3306;Database=studentdb;User Id=root;Password=1234;" }8. LƯU Ý rằng trong cấu hình, bạn phải sử dụng phương thức
"ConnectionStrings": { "DBConn": "Server=localhost;port=3306;Database=studentdb;User Id=root;Password=1234;" }9 thay vì
using Pomelo.EntityFrameworkCore.MySql.Infrastructure; using CRUDWebAPIWithMySQL.Models; using Microsoft.EntityFrameworkCore;0. Bạn phải nhập ba cái này.
using Pomelo.EntityFrameworkCore.MySql.Infrastructure; using CRUDWebAPIWithMySQL.Models; using Microsoft.EntityFrameworkCore;1,
using Pomelo.EntityFrameworkCore.MySql.Infrastructure; using CRUDWebAPIWithMySQL.Models; using Microsoft.EntityFrameworkCore;2 và lớp Model và DBContext của bạn nằm trong thư mục
"ConnectionStrings": { "DBConn": "Server=localhost;port=3306;Database=studentdb;User Id=root;Password=1234;" }2
using Pomelo.EntityFrameworkCore.MySql.Infrastructure; using CRUDWebAPIWithMySQL.Models; using Microsoft.EntityFrameworkCore;
Sau đó, thêm phương thức
"ConnectionStrings": { "DBConn": "Server=localhost;port=3306;Database=studentdb;User Id=root;Password=1234;" }9 để kết nối
public void ConfigureServices[IServiceCollection services] { services.AddDbContextPool[ options => options.UseMySql[Configuration.GetConnectionString[] ]]; services.AddMvc[]; }
public void ConfigureServices[IServiceCollection services] { services.AddDbContextPool[ options => options.UseMySql[Configuration.GetConnectionString["DBConn"] ]]; services.AddControllers[]; }
Sau đó tạo lớp
using Pomelo.EntityFrameworkCore.MySql.Infrastructure; using CRUDWebAPIWithMySQL.Models; using Microsoft.EntityFrameworkCore;5. VS tạo nó tự động. Làm theo các bước dưới đây
- Nhấp vào nút bên phải của chuột và
using Pomelo.EntityFrameworkCore.MySql.Infrastructure; using CRUDWebAPIWithMySQL.Models; using Microsoft.EntityFrameworkCore;
6
- Chọn
using Pomelo.EntityFrameworkCore.MySql.Infrastructure; using CRUDWebAPIWithMySQL.Models; using Microsoft.EntityFrameworkCore;
7
- Chọn lớp Mô hình của bạn và Lớp ngữ cảnh DB của chúng tôi
Bước 7. di cư
Nếu bạn đã cài đặt Công cụ EF như tôi, thì bạn có thể chạy 2 lệnh tiếp theo trong Bảng điều khiển quản lý gói
mở
using Pomelo.EntityFrameworkCore.MySql.Infrastructure; using CRUDWebAPIWithMySQL.Models; using Microsoft.EntityFrameworkCore;8 của bạn
Add-Migration Update-Database
Đây là của tôi,
Add-Migration InitialCreate Update-Database
Nếu có bất kỳ sự cố nào trong quá trình Di chuyển của bạn, hãy xóa các lần di chuyển trước đó của bạn
Remove-Migration
Sau khi di chuyển thành công, một bảng có tên
using Pomelo.EntityFrameworkCore.MySql.Infrastructure; using CRUDWebAPIWithMySQL.Models; using Microsoft.EntityFrameworkCore;9 trong cơ sở dữ liệu
public void ConfigureServices[IServiceCollection services] { services.AddDbContextPool[ options => options.UseMySql[Configuration.GetConnectionString[] ]]; services.AddMvc[]; }0
Bước 8. Kiểm tra lần cuối
Bây giờ chúng ta đã sẵn sàng. Tôi đã tự thêm một số hàng. Mở
"ConnectionStrings": { "DBConn": "Server=;port=3306;Database=studentdb;User Id=root;Password=1234;" }8, sau đó chọn bảng của bạn rồi thêm một hàng