Hướng dẫn xây dựng web api entity framework mới nhất 2020 – Xây dựng web

Rate this post

Xây dựng web api entity framework là một trong những keyword được search nhiều nhất trên Google về chủ đề xây dựng web api entity framework. Trong bài viết này, chúng tôi sẽ viết bài viết Hướng dẫn xây dựng web api entity framework mới nhất 2020.

Xây Dựng Web Api Entity Framework

Hướng dẫn xây dựng web api entity framework mới nhất 2020

1. Website Api là gì

Asp. net web Api là một framework giúp cho việc xây dựng HTTP service một giải pháp thuận tiện. Chúng đủ sức tăng trưởng cho nhiều clients không giống nhau như trình duyệt, mobile app. web api là một mạng lưới hệ thống để tăng trưởng những vận dụng dựa trên Restfull service trong. Net. Các bạn đủ nội lực ảnh dung vị trí của Asp. net Api trong. Net giống như ảnh bên dưới :

h68-0.png

2. Áp dụng dùng thử

Công nghệ sử dụng :

  • Visual studio 2013
  • .Net 4.6
  • web Api 2.0
  • Entity framework 6.0
  • Knockout js

2.1. Tạo project

  • mở Visual studio
  • lựa chọn New project
  • Tại cửa sổ dialog lựa chọn Asp.net website applicaltion
  • Tiếp đến lựa chọn web API như ảnh bên dưới

CreateProject.jpg

2.2. Tạo data models

Trong ứng dựng demo này tôi sẽ tạo 2 Mã Sản Phẩm category và product. Để tạo một Model mới, tất cả chúng ta click chuột phải tại thư mục Models chọn “ New ” sau đó lựa chọn “ class ” như cách tạo những class thường thì .

CreateProducModels.jpg

– Category class :

using System.ComponentModel.DataAnnotations;namespace WebAPIDemo.Models
publicclassCategorypublicint Id get ; set ; [ Required ] publicstring Name lấy ; set ;

– Product class :

using System.ComponentModel.DataAnnotations;namespace WebAPIDemo.Models
publicclassProductpublicint Id get ; set ; [ Required ] publicstring Name lấy ; set ; publicdecimal Price get ; set ; publicint CategoryId quét ; set ; publicvirtualCategory Category get ; set ;

note với Entity Framework 6.0, nó đang tương hỗ chính sách lazy loading. Trong dùng thử này phân khúc Product có khóa ngoại là CategoryId, cùng lúc nó đủ sức truy vấn tới Category trải qua đặc thù Category. Để có lazy loading tất cả chúng ta cần thêm từ khóa vitual cho thuộc tính này. Chúng ta đủ sức hiểu lazy loading trong trường hợp này giống như sau :

db.products.ToList() // thị trường Category sẽ không được load cùng hạng mục productsdb.products[0].Category // chỉ khi truy suất vào một product cụ thể Category mới được load

2.3. Tạo controller

ef06.png

Tại hành lang cửa số “ Add controller ”

  • Tại Model class dropdownlist, chọn Category class.
  • Tích lựa chọn “Use async controller actions”.
  • Trong mục “Controller Name” tên controller auto được điền vào.

CreateController.jpg

Tiếp đến click ( + ) button ở mục “ Data context Class ”, tại hành lang cửa số “ New Data Context ” gõ tên Data context class theo mong ước. Ở đây tôi tạo class có tên : WebAPIDemoContext. ProductsController được tạo tương tự như như những bước trên .

2.4. sử dụng việc với Entity framework

Trong demo này tôi sử dụng Code First Migrations để init data và thao tác với Sql server. tiên phong cần enable migration, để làm điều này tất cả chúng ta triển khai như sau : chọn tool => chọn Nuget Package Manager => chọn Package Manage Console. Trong hành lang cửa số Package Manage Console gõ lệnh :

Enable-Migrations

Một thư mục Migrations được xây dựng cùng một file có tên là “ Configuration ”. tiếp theo tất cả chúng ta sẽ nâng cấp cải tiến method “ Seed trong class này để init data. Đây là method xây dựng sẵn trong class DbContext của Entity Framework và tất cả chúng ta trọn vẹn đủ sức ghi đè theo trường hợp sử dụng

protectedoverridevoidSeed(WebAPIDemoContext context)
        context. Categories. AddOrUpdate ( x => x. Id, newCategory Id = 1, Name = " Mobile ", newCategory Id = 2, Name = " Tablet ", newCategory Id = 3, Name = " Smart watch " ) ; context. Products. AddOrUpdate ( x => x. Id, newProduct Id = 1, Name = " Product 1 ", CategoryId = 1, Price = 9.99 M, , newProduct Id = 2, Name = " Product 2 ", CategoryId = 1, Price = 12.95 M, , newProduct Id = 3, Name = " Product 3 ", CategoryId = 2, Price = 15, , newProduct Id = 4, Name = " Product 4 ", CategoryId = 3, Price = 10, ) ;

Ok, tất cả chúng ta đang có một số ít data check cho demo. ngày này tất cả chúng ta cần một class để tạo table và insert những bản ghi trên vào sql server, để sử dụng điều đó ta gõ lệnh :

Add-Migration Initial
Update-Database

Một file migarion được tạo ra với code được tự động hóa generate

namespace WebAPIDemo.Migrations
using System ; using System. Data. Entity. Migrations ; publicpartialclassInitial : DbMigrationpublicoverridevoidUp ( ) CreateTable ( " dbo. Categories ", c => new Id = c. Int ( nullable : false, identity : true ), Name = c. String ( nullable : false ), ). PrimaryKey ( t => t. Id ) ; CreateTable ( " dbo. Products ", c => new Id = c. Int ( nullable : false, identity : true ), Name = c. String ( nullable : false ), Price = c. Decimal ( nullable : false, precision : 18, scale : 2 ), CategoryId = c. Int ( nullable : false ), ). PrimaryKey ( t => t. Id ). ForeignKey ( " dbo. Categories ", t => t. CategoryId, cascadeDelete : true ). Index ( t => t. CategoryId ) ; publicoverridevoiddownload ( ) DropForeignKey ( " dbo. Products ", " CategoryId ", " dbo. Categories " ) ; DropIndex ( " dbo. Products ", new [ ] " CategoryId " ) ; DropTable ( " dbo. Products " ) ; DropTable ( " dbo. Categories " ) ;

Với đoạn code ở trên, Code First sẽ tự động hóa link, tạo database, table và insert data tới sql server trong lần khởi chạy đầu tiền tài ứng dụng, những lần sau đó nếu có đổi khác migration DB sẽ được update ngược lại chúng sẽ không tạo lại nữa. hiện giờ tất cả chúng ta nhấn F5 để chạy web, sau đó kiểm tra database trong Server Exploer của Visual studio. Nếu có đa phần table và tài liệu giống như ảnh bên dưới thì việc khởi tạo DB đã thành đạt .

Xem thêm: Thiết kế Website chuyên nghiệp

sqlServerConnection.jpg

productTableData.jpg

2.5. thiết lập client với với knockout js

Trong ứng dụng này, tôi sử dụng Knockout js để xây dựng phía client. Knockout js là một thư viện javascript sử dụng mô ảnh Model-View-ViewModel ( MVVM ). Các bạn đủ sức điều tra và nghiên cứu thêm tại web Knockout. hoàn toàn có thể tưởng tượng quy mô hoạt động giải trí của vận dụng như sau :

ef31.png

Chúng ta sẽ thiết lập 3 tính năng cơ bản cho vận dụng dùng thử :

  • Show mục lục món hàng
  • Show chi tiết sản phẩm & hàng hóa
  • Thêm mới sản

Trước tiên, tất cả chúng ta add knockout js tới vận dụng. Trong Package manager console gõ lệnh :

Install-Package knockoutjs

Tạo lượt xem Mã Sản Phẩm :
Ở đây tôi sẽ tạo một file với tên là app.js trong thư mực Scripts của dự án Bất Động Sản để viết những hàm thao tác dự liệu với Server trải qua Knockout JS

varViewModel=function () var self = this ; self.products = không. observableArray ( ) ; self.error = ko.observable ( ) ; var productsUri = ' / api / products / ' ; functionajaxHelper ( uri, method, data ) self.error ( ' ' ) ; / / Clear error messagereturn USD. ajax ( type : method, url : uri, dataType : ' json ', contentType : ' application / json ', data : data ? JSON.stringify ( data ) : null ). thất bại ( function ( jqXHR, textStatus, errorThrown ) self.error ( errorThrown ) ; ) ; functiongetAllProducts ( ) ajaxHelper ( productsUri, ' GET ' ). done ( function ( data ) self.products ( data ) ; ) ; / / Fetch the initial data. getAllProducts ( ) ; self.detail = ko.observable ( ) ; self. getProductDetail = function ( item ) ajaxHelper ( productsUri + item. Id, ' GET ' ). done ( function ( data ) self.detail ( data ) ; ) ; self.categories = không. observableArray ( ) ; self. newProduct = Category : không. observable ( ), Name : không. observable ( ), Price : ko.observable ( ), var categoriesUri = ' / api / categories / ' ; functiongetCategories ( ) ajaxHelper ( categoriesUri, ' GET ' ). done ( function ( data ) self.categories ( data ) ; ) ; self. addProduct = function ( formElement ) var product = CategoryId : self. newProduct. Category ( ). Id, Name : self. newProduct. Name ( ), Price : self. newProduct. Price ( ), ; ajaxHelper ( productsUri, ' POST ', product ). done ( function ( item ) self.products.push ( item ) ; ) ; getCategories ( ) ;;

ko.applyBindings(newViewModel());

Binding trên view :


class="panel panel-default">

class="panel-heading">

class="panel-title">Products

class="panel-body">

  • class="list-unstyled"data-bind="foreach: products">
    • data-bind="text: CategoryName">: data-bind="text: Name">href="#"data-bind="click: $parent.getProductDetail">Details

ứng dụng demo sẽ như ảnh bên dưới :

finalResult.jpg

Trên đây tôi đã tạo một vận dụng đơn thuần sử dụng Asp. Net WebAPI 2.0, EF 6.0. Hy vọng rằng dùng thử này sẽ khiến những bạn chưa biết đủ sức mở màn thao tác với Asp. net WebApi. Nó là quen thuộc nếu những bạn đã từng thao tác với Asp. Net Mvc, song song nó cũng không quá khó khăn vất vả cho những ai mới làm quen. Chúc những bạn thành công xuất sắc .