C#学习笔记(五):.net 第一个API创建,配置等问题的解决,EF Core实现CRUD的代码注释

    xiaoxiao2022-07-12  156

    新建API项目

     

     

     

    生成API项目的目录结构

    Controllers文件夹下的TestController的命名决定访问url的路径

    比如图中TestComtroller.cs 访问的路径就为https://127.0.0.1:5001/api/test

    首先在TestComtroller.cs 写自己的业务逻辑

     

     

     

     

    无法索引到其他项目中的模块

    需要在依赖项中添加引用

     

    注意:好像是我下载的编辑器有问题,第一次勾选的引用可以正常使用,第二次就不行

    所以 尽量在第一次勾选的时候就把所以项都勾选了 以防之后要使用

    生成项目尝试运行

    遇到一些预下载的依赖项不兼容问题,我把这些依赖项全部删除以后可以正常运行项目

     

    注意安装版本 版本过高会导致不兼容问题

    然后重新生成继续运行

    无法获取数据 原因是没有进行数据库连接配置

    这三个文件全部都要配置,不懂就全部复制

    再次重新生成,再次运行

     

    [TttpGet("这个参数决定url路径")]

    配置url访问为action也就是对应方法名  MVC中默认为action可以不用配置

    using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Dledc.Application.SysDataAcquisition; using Dledc.Code; using Dledc.Domain.Entity.SysDataAcquisition; using Dledc.Domain.IRepository.SysDataAcquisition; using Dledc.Repository.SysDataAcquisition; using Microsoft.AspNetCore.Mvc; namespace DataAcquisition.Controllers { [Route("api/[controller]")] [ApiController] public class DataAcquisitionController : ControllerBase { // GET api/values // 导入数据集 此时的service就是SysDataAcquisition这张表对应的数据集对象 private ISysDataAcquisitionRepository service = new SysDataAcquisitionRepository(); // 导入CRUD的方法 在Controller模块中进行调用 private SysDataAcquisitionApp sysDataAcquisitionApp = new SysDataAcquisitionApp(); // GET api/values // GET 数据插入 [HttpGet("action")] // 获取插入数据 ID为自增字段 public ActionResult<string> Insert(string UserId, string Model, string SysCode, string EqpCode, string Ip, string EXT) { // 获取SysDataAcquisition实体 SysDataAcquisitionEntity sysDataAcquisitionEntity = new SysDataAcquisitionEntity { // 对实体进行赋值 UserId = UserId, Model = Model, SysCode = SysCode, EqpCode = EqpCode, Ip = Ip, EXT = EXT, CreatorTime = DateTime.Now }; // 将实体添加进数据集 service.Insert(sysDataAcquisitionEntity); // 返回值 return Content("提交成功"); } [HttpGet("action")] public ActionResult<string> Select(string keyword) { // 调用App中的GetList方法 获得满足条件的数据列表 无keyword时返回表中所有数据 列表形式保存 var data = sysDataAcquisitionApp.GetList(keyword); // 将数据转换成json数据返回 return Content(data.ToJson()); } [HttpGet("action")] public ActionResult<string> Delete(int keyword) { // 调用App中的Delete方法 sysDataAcquisitionApp.Delete(keyword); return Content("删除成功"); } [HttpGet("action")] // 获取数据,最主要的是keyword作为唯一主键进行查询找到所需要修改的那条数据 public ActionResult<string> Update(int keyword, string UserId, string Model, string SysCode, string EqpCode, string Ip, string EXT) { // 调用App中的SubmitForm方法 sysDataAcquisitionApp.SubmitForm(keyword, UserId, Model, SysCode, EqpCode, Ip, EXT); return Content("修改成功"); } } [HttpPost] //[HandlerAjaxOnly] // 请求伪造 [ValidateAntiForgeryToken] public ActionResult SubmitForm(AreaEntity areaEntity, string keyValue) { try { // 通过判断是否传递keyValue来确认用户操作是新建还是修改 if (!string.IsNullOrEmpty(keyValue)) { // 调用SubmitForm用户数据修改函数 areaApp.OldSubmitForm(areaEntity, keyValue); return Success("操作成功"); } else { 调用GetList用户信息函数 //var data = areaApp.GetList(); 生成用户信息存储列表 //var treeList = new List<TreeSelectModel>(); //foreach (AreaEntity item in data) //{ // // 将用户名加入存储列表 // TreeSelectModel treeModel = new TreeSelectModel(); // treeModel.text = item.F_FullName; // treeList.Add(treeModel); //} 将from表单数据里的名字和list列表里存储的用户名做判断 Count计数 //int nCount = treeList.Count(t => t.text == areaEntity.F_FullName); AreaEntity ue = service.FindEntity(t => t.F_FullName == areaEntity.F_FullName); if (ue != null) { return Success("操作失败,已有同名的数据对象。"); } else { // 调用SubmitForm用户数据提交函数 areaApp.NewSubmitForm(areaEntity); return Success("操作成功"); } } } catch (Exception ex) { throw (ex); } } } using Dledc.Code; using Dledc.Domain.Entity.SysDataAcquisition; using Dledc.Domain.IRepository.SysDataAcquisition; using Dledc.Repository.SysDataAcquisition; using System; using System.Collections.Generic; using System.Linq; namespace Dledc.Application.SysDataAcquisition { public class SysDataAcquisitionApp { // 导入数据集 此时的service就是SysDataAcquisition这张表对应的数据集对象 private ISysDataAcquisitionRepository service = new SysDataAcquisitionRepository(); // 查询url public List<SysDataAcquisitionEntity> GetList(string keyword = "") { // 根据实体类机构生成查询语句 var expression = ExtLinq.True<SysDataAcquisitionEntity>(); // 判断是否传递keyword 没有的传递就不执行筛选逻辑 if (!string.IsNullOrEmpty(keyword)) { expression = expression.And(t => t.UserId.Contains(keyword)); expression = expression.And(t => t.Model.Contains(keyword)); expression = expression.Or(t => t.SysCode.Contains(keyword)); expression = expression.Or(t => t.EqpCode.Contains(keyword)); expression = expression.Or(t => t.Ip.Contains(keyword)); expression = expression.Or(t => t.EXT.Contains(keyword)); } // 返回一个以ID升序排列的列表 return service.IQueryable(expression).OrderBy(t => t.ID).ToList(); } // 删除url public void Delete(int keyword) { // 删除条件为ID等于传入keyword的那条数据 service.Delete(t => t.ID == keyword); } // 修改url public void SubmitForm(int keyword, string UserId, string Model, string SysCode, string EqpCode, string Ip, string EXT) { // 在数据集中找到ID为传入值的那条数据 并让他继承SysDataAcquisitionEntity实体 SysDataAcquisitionEntity sysDataAcquisitionEntity = service.FindEntity(t => t.ID == keyword); // 逐一将传入数据赋值给实体 sysDataAcquisitionEntity.UserId = UserId; sysDataAcquisitionEntity.Model = Model; sysDataAcquisitionEntity.SysCode = SysCode; sysDataAcquisitionEntity.EqpCode = EqpCode; sysDataAcquisitionEntity.Ip = Ip; sysDataAcquisitionEntity.EXT = EXT; sysDataAcquisitionEntity.CreatorTime = DateTime.Now; // 保存修改数据集 service.Update(sysDataAcquisitionEntity); } } public void OldSubmitForm(AreaEntity areaEntity, string keyValue) { // 获取表单数据修改id为keyValue的数据 areaEntity.Modify(keyValue); service.Update(areaEntity); } public void NewSubmitForm(AreaEntity areaEntity) { // 获取表单数据新建数据 areaEntity.Create(); service.Insert(areaEntity); } }

     

     

     

     

    最新回复(0)