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

本文介绍了如何新建一个C# .NET API项目,强调了控制器命名对URL路径的影响,以及在处理引用、版本兼容性和数据库连接配置时遇到的问题和解决方法。通过示例代码展示了[TttpGet]装饰器用于定义URL路径。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

新建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);
        }
}




 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值