netcore3.1API+efcore快速搭建


netcore3.1API+efcore快速搭建

框架結構#

實體層 Aer.Enties#

Models-->實體類

業務層 After.IService#

IAltestitemController.cs

業務層 After.Service#

AlltestitemService.cs

接口層 AfterCore#

Controllers-> AlltestitemController.cs

一 EF從數據庫生成實體類到Enties#

1.執行以下語句安裝依賴包#

Copy
Install-Package MySql.Data.EntityFrameworkCore -Pre
Install-Package Pomelo.EntityFrameworkCore.MySql
Install-Package Microsoft.EntityFrameworkCore.Tools
Install-Package Microsoft.VisualStudio.Web.CodeGeneration.Design

2.在程序包包管理器控制台#

Copy
Scaffold-DbContext "server=localhost;userid=root;pwd=1;port=3306;database=syerp;sslmode=none;" Pomelo.EntityFrameworkCore.MySql -OutputDir Models -Force 

二 業務層#

添加IAlltestitemService.cs接口

Copy
using AfterCore.Models; using System.Collections.Generic; using System.Threading.Tasks; namespace After.IService { public interface IAlltestitemService { /// <summary> /// 查詢所有 /// </summary> /// <returns></returns> Task<List<Alltestitem>> GetAllAsync(); /// <summary> /// 查詢總數 /// </summary> /// <returns></returns> Task<int> CountAsync(); } } 

After.Service接口實現

AlltestitemService.cs

Copy
using After.IService; using AfterCore.Models; using Microsoft.EntityFrameworkCore; using System.Collections.Generic; using System.Threading.Tasks; namespace After.Service { public class AlltestitemService : IAlltestitemService { private readonly testContext _testDbContext;//DB public AlltestitemService(testContext testContexts) { _testDbContext = testContexts; } public async Task<int> CountAsync() { return await _testDbContext.Alltestitem.CountAsync(); } public async Task<List<Alltestitem>> GetAllAsync() { return await _testDbContext.Alltestitem.ToListAsync(); } } } 

三 注冊DbContext#

appsettings.json#

Copy
"ConnectionStrings": { "DefaultConnection": "Server=;database=test;uid=root;pwd=m;" }, 

Startup.cs#

Copy
  //注冊DbContext ConfigureServices services.AddDbContext<testContext>(options => options.UseMySql(Configuration.GetConnectionString("DefaultConnection"))); services.AddControllers(); services.AddScoped<IAlltestitemService, AlltestitemService>();//ioc 

四 添加Swagger#

安裝依賴包#

Copy
Swashbuckle.AspNetCore

ConfigureServices(IServiceCollection services)#

Copy
//注冊swagger服務 services.AddSwaggerGen(c => { c.SwaggerDoc("v1", new OpenApiInfo { Version = "v1", Title = "SN博客 API", Description = "EFCore數據操作 ASP.NET Core Web API", TermsOfService = new Uri("https://example.com/terms"), Contact = new OpenApiContact { Name = "Shayne Boyer", Email = string.Empty, Url = new Uri("https://twitter.com/spboyer"), }, License = new OpenApiLicense { Name = "Use under LICX", Url = new Uri("https://example.com/license"), } }); // 為 Swagger 設置xml文檔注釋路徑 var basePath2 = AppContext.BaseDirectory;// xml路徑 //var xmlModelPath = Path.Combine(basePath2, "Snblog.Enties.xml");//Model層的xml文件名 var corePath = Path.Combine(basePath2, "AfterCore.xml");//API層的xml文件名 //c.IncludeXmlComments(xmlModelPath); c.IncludeXmlComments(corePath, true); //添加對控制器的標簽(描述) c.CustomSchemaIds(type => type.FullName);// 可以解決相同類名會報錯的問題 // c.OperationFilter<AddResponseHeadersFilter>(); // c.OperationFilter<AppendAuthorizeToSummaryOperationFilter>(); // // c.OperationFilter<SecurityRequirementsOperationFilter>(); }); 

Configure(IApplicationBuilder app, IWebHostEnvironment env)#

Copy
 #region Swagger //可以將Swagger的UI頁面配置在Configure的開發環境之中 app.UseSwagger(); //和Swagger UI app.UseSwaggerUI(c => { c.SwaggerEndpoint("/swagger/v1/swagger.json", "SN博客API"); c.RoutePrefix = string.Empty; }); #endregion 

五 顯示層AfterCore#

Controllers->AlltestitemController.cs

Copy
using After.IService; using Microsoft.AspNetCore.Mvc; using System.Threading.Tasks; //默認的約定集將應用於程序集中的所有操作: [assembly: ApiConventionType(typeof(DefaultApiConventions))] namespace AfterCore.Controllers { [Route("api/[controller]")] [ApiController] public class AlltestitemController : ControllerBase { private readonly IAlltestitemService _service; //IOC依賴注入 public AlltestitemController(IAlltestitemService service) { _service = service; } /// <summary> /// 查詢所有 /// </summary> /// <returns></returns> // [ApiExplorerSettings(IgnoreApi = true)] //隱藏接口 或者直接對這個方法 private,也可以直接使用obsolete屬性 [HttpGet("GetAllAsync")] public async Task<IActionResult> GetAllAsync() { return Ok(await _service.GetAllAsync()); } /// <summary> /// 查詢總數 /// </summary> /// <returns></returns> // [ApiExplorerSettings(IgnoreApi = true)] //隱藏接口 或者直接對這個方法 private,也可以直接使用obsolete屬性 [HttpGet("CountAsync")] public async Task<IActionResult> CountAsync() { return Ok(await _service.CountAsync()); } } } 

運行#


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM