Kết nối cơ sở dữ liệu trong asp.net mvc

      226

Tại phần trước bạn đã có một quan niệm cơ bạn dạng về mô hình MVC. Dựa vào đó, họ sẽ liên tiếp bài viết liên quan về database rất nhiều sự việc liên quan nhé.

Bạn đang xem: Kết nối cơ sở dữ liệu trong asp.net mvc

Xem các bài viết trong series

1. Lựa chọn database3. Tạo Model với Database4. Model Binding

Có thể hiểu database là trái tim của vận dụng, còn asp.net là khối óc. Thiết kế một database cho đúng đắn thì yên cầu tương đối thời gian học + rèn luyện thì nó mới lên trình được.

Một bí quyết không giống rất thú vị là hợp tác vào có tác dụng một project thực tế. Nếu tuân theo phần trước, dĩ nhiên các bạn cũng đã có 1 sample project với thương hiệu mvcbasic thất thoát.

Nhìn bình thường, các bạn sẽ có một project giống hệt như sau: MVC Basic 0.1 on Github

1. Lựa lựa chọn database

Có hơi bị các hệ cai quản trị cửa hàng tài liệu đã đấu đá nhau trên Thị Trường. Ở đây bản thân đã nói sơ sang 1 số một số loại phổ biến

1.1. Squốc lộ Server

Cây đơn vị là vườn cửa, miễn chi phí cho tất cả những người sử dụng cá thể, công suất cao, mạnh khỏe, là hệ đại lý dữ liệu có quan hệ tình dục. Sql Server đang chứng minh đến phần lớn dev thấy tính ổn định của nó.

1.2. The others

Nhìn chung, Microsoft bao gồm cung cấp kha khá các hệ đại lý tài liệu khác ví như MySQL, PostgreSQL, SQLite, nhưng mà nếu như vẫn chọn lọc những hệ này, thì các bạn sẽ đề nghị trường đoản cú mày mò kha khá những vụ việc nhưng mà đa phần đã làm được xử lý khi sử dụng Squốc lộ Server

2. Entity Framework

ASP..NET gồm một điểm mạnh là Entity Framework (EF). Ở phiên phiên bản core thì nó tất cả thêm EF Chip Core. EF hiểu nôm mãng cầu là một cỗ nguyên tắc được cho phép chúng ta kết nối tới database, truy nã vấn, thêm xóa sửa vân vân mà lại không nhất thiết phải bao gồm kỹ năng và kiến thức về kiểu cách viết Squốc lộ.

Có lợi thì cũng đề xuất vô ích, EF theo đánh giá của không ít người thì nó khá….chậm rãi. Như vậy đang cùng đang được nâng cấp rất nhiều ngơi nghỉ phiên phiên bản bắt đầu đi kèm cùng với ASPhường.NET Core là Entity Framework Chip Core.

Xem thêm: Chia Sẻ 301 Sạc Không Báo Gì, 301 Sac Khong Bao Gi Giá Trị Tốt Nhất

quý khách hàng cần tải đặt

Cài nuget package

Mngơi nghỉ project mvcbasic bằng vscode

Lần lượt gõ các lệnh sau vào terminal

dotnet add package Microsoft.EntityFrameworkCore.SqlServerdotnet add package Microsoft.VisualStudio.Web.CodeGeneration.DesignSau kia, mở tệp tin mvcbasic.csproj với thêm dòng sau

liên tiếp gõ trong terminal

dotnet restore3. Tạo Model cùng DatabaseCó 2 phương pháp để bước đầu thao tác với database vào asp.net core là Code first với Database first.

Nthêm gọn thì Code first được cho phép chúng ta viết code trước (chế tác những model class), rồi những mã sản phẩm bạn chế tạo sẽ được update lên database thông qua các migration. Database first vậy nên phương pháp truyền thống lâu đời từ xưa tới nay: Tạo database trước, cùng code của bạn tất cả nghĩa vụ ‘connect’ cho tới database kia.

quý khách rất có thể xem thêm ngơi nghỉ đây: Code first vs Database first

3.1. Tạo Model Phone

loài chuột đề xuất vào thư mục Models > new file > Phone.cs

namespace mvcbasic.Models public class Phone public int Id get; set; public string Name get; set;

3.2. Tạo Database Context

Database Context có thể phát âm như một luật chất nhận được áp dụng của bạn liên kết tới Database cùng triển khai những tác vụ thêm xóa sửa.

Tạo 1 thư mục bắt đầu nghỉ ngơi tlỗi mục gốc với thương hiệu ‘Data’

Chuột yêu cầu vào folder Data > new file > MvcBasicDbContext.cs

namespace mvcbasic.Data using Models; using Microsoft.EntityFrameworkCore; public class MvcBasicDbContext : DbContext public MvcBasicDbContext(DbContextOptions options) : base(options) public DbSet Phones get; set;

3.3. Cài đặt Connection String

Để liên kết tới database, thì Entity Framework đã cần có các ban bố nhỏng username, password, thương hiệu database, VPS sẽ host mẫu database này. Tất cả thông số kỹ thuật đó đều gộp phổ biến lại thành 1 đoạn string, với giang hồ nước Điện thoại tư vấn nó là connection string

Msống file appsettings.json cùng cung cấp đoạn json sau

"ConnectionStrings" : "PhoneDbConnectionString": "Server=(localdb)\mssqllocaldb;Database=PhoneDb;Trusted_Connection=True;"

Đoạn connection string trên tất cả chân thành và ý nghĩa nhỏng sau Server: LocalDb (là một dạng database local bao gồm bên trên những phiên phiên bản new của Squốc lộ Server) Database: PhoneDb Connection cho tới database cần sử dụng Windows Authentication

Quý khách hàng có thể sẽ phải config lại đoạn connection string này đến đúng với môi trường thao tác của bạn

3.4. Cài đặt kết nối

Msống file Startup.cs, search method ConfigureServices cùng thêm vào dòng xoáy sau

services.AddDbContext(options => options.UseSqlServer(Configuration.GetConnectionString("PhoneDbConnectionString")));với ghi nhớ add thêm 2 cái using

using Microsoft.EntityFrameworkCore;using mvcbasic.Data;

3.5. Tạo Migration đầu tiên

Sau khi toàn bộ những thao tác làm việc chuẩn bị đã hoàn toàn, đã đến lúc bạn tạo nên migration thứ nhất của mình

Trong terminal, gõ

dotnet ef migrations add InitialCreateVSCode sẽ tự động tạo thành một thư mục tên Migrations, cùng thêm cơ số file vào đấy

new files

Tiếp tục, gõ

dotnet ef database updatethì các migration này sẽ tiến hành triển khai, với database sẽ tiến hành tạo thành ra

*

Để bình chọn, bạn có thể sử dụng Microsoft Squốc lộ Server Management Studio cùng với những thông số kỹ thuật sau

Server Name: (LocalDb)MSSQLLocalDBAuthentication: Windows Authentication

MSSQLLocalDB là tên instance của chúng ta, rất có thể không giống nếu lúc tải SQL Server chúng ta ko lựa chọn nlỗi default

4. Model Binding

Sau khi hoàn toàn quá trình trên, cơ phiên bản website tiện ích của bạn đã có thể kết nối tới database. Nhưng để triển khai các hành động thêm xóa sửa, thì bạn phải tất cả Controller nữa

Quý Khách có thể sở hữu project hoàn chỉnh nghỉ ngơi bước 3 tại đây

4.1. Tạo Controller

VSCode cũng hỗ trợ bạn vào Việc tự động hóa tạo nên controller mong ước cơ mà ko cần code những (thực ra ko bắt buộc là VSCode cung cấp, mà một mức sử dụng hotline là .NET Cli tools với vài ba nuget package có thể chấp nhận được các bạn làm cho cthị xã này, tuy vậy trước đôi mắt cđọng hiểu vậy đã)

Tên Controller, theo asp.net convention như mình đã nói tại đoạn 1, sẽ có dạng Controller, trong ngôi trường thích hợp này đã là PhoneController.

Một phép tắc đặt tên thông dụng là

Tên bảng -> số nhiều: Phones

Tên model -> số ít: Phone

Tên controller: PhoneController

Tên view: Create, Delete, Details, Edit cùng Index

4.2. Các nuget cần thiết

Để có thể sinh sản controller, bạn sẽ đề xuất thêm một trong những tool nữa

Mlàm việc mvcbasic.csproj cùng thêm các mẫu sau

.........Tổng quan liêu, tệp tin csproj vẫn hệt như sau

netcoreapp2.0

4.3. Scaffolding

Msinh hoạt terminal, và gõ lệnh sau

dotnet restoredotnet builddotnet aspnet-codegenerator controller -name PhoneController -m Phone -dc MvcBasicDbContext --relativeFolderPath Controllers --useDefaultLayout --referenceScriptLibrariesNhìn vào câu lệnh bên trên, chắc các bạn cũng trở nên đoán thù được nó làm gì: “Này dotnet, tạo cho tao 1 controller bắt đầu tên là PhoneController, dùng model là Phone, Data Context là MvcBasicDbContext, vào thư mục thương hiệu là Controllers, cần sử dụng mặc định layout, à tất cả scripts đi kèm nhá”

2 câu lệnh thứ nhất giúp bạn thực sự mua nuget, cùng build project một phát nhằm bảo đảm an toàn ko tất cả lỗi phát sinh, cùng clear những tệp tin tạm thời ko còn đề xuất thiết

*

gõ tiếp dotnet run nhằm chạy demo app

*

bạn có thể vọc vạch các giao diện với những link nhưng mà asp.net core chế tạo sẵn cho bạn, create new, edit, delete, details nào đấy thì tùy

5. Model Binding

Mở file PhoneController ra, bạn sẽ thấy tất cả sẵn code trong đấy rồi, Mặc dù ko đẹp lắm, mà lại nhìn toàn diện là nó chạy tốt

Hãy nhìn vào method Details

// GET: Phone/Details/5public async Task Details(int? id) if (id == null) return NotFound(); var phone = await _context.Phones .SingleOrDefaultAsync(m => m.Id == id); if (phone == null) return NotFound(); return View(phone);Method này nhấn một tmê mẩn số là nullable int có tên là id, khi chúng ta Gọi tới url Phone/Details/5 (nhỏng chiếc bình luận ở mặt trên), thì số 5 đó sẽ được đọc là Id. Đó chính là mã sản phẩm binding

Tiếp tục, chú ý vào class Create tất cả attribute

// POST: Phone/Create// To protect from overposting attacks, please enable the specific properties you want to lớn bind to lớn, for // more details see http://go.microsoft.com/fwlink/?LinkId=317598.public async Task Create( Phone phone) if (ModelState.IsValid) _context.Add(phone); await _context.SaveChangesAsync(); return RedirectToAction(nameof(Index)); return View(phone);Model binding còn ảo diệu ở đoạn, nếu bạn cần sử dụng hẳn 1 class làm cho parameter, thì ASP.NET đang tự gọi các property trong class kia, với đính đúng từng quý giá một

quý khách có thể xóa đi và code vẫn chạy giỏi, nhưng mà nlỗi Microsoft đã chú ý, để bảo đảm an toàn chúng ta ngoài chuyện orver posting attachồng, thì bạn đề nghị hướng dẫn và chỉ định luôn là property như thế nào sẽ được gắn

Method này khớp ứng với Views > Phone > Create.cshtml

từ khóa asp-for thông tin rằng Name là property sẽ được truyền lên VPS, và VPS đang “gắn” nó vào Mã Sản Phẩm phone của method Create

Tại sao lại ko bao gồm Id?

Vì Id mang định được coi nhỏng Key của bảng Phone, với key thì ko cần được bao gồm khi chế tác mới, do database sẽ từ bỏ sinh ra nó