iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >asp.net怎么使用WebAPI和EF框架结合实现数据的基本操作
  • 438
分享到

asp.net怎么使用WebAPI和EF框架结合实现数据的基本操作

2023-06-30 11:06:37 438人浏览 安东尼
摘要

这篇文章主要介绍“asp.net怎么使用webapi和EF框架结合实现数据的基本操作”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“asp.net怎么使用WEBapi和EF框架结合实现数据的基本操作”

这篇文章主要介绍“asp.net怎么使用webapi和EF框架结合实现数据的基本操作”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“asp.net怎么使用WEBapi和EF框架结合实现数据的基本操作”文章能帮助大家解决问题。

一、资料准备

数据库脚本:

create table Dept --部门信息(DeptId int primary key identity(1,1),DeptName varchar(50) not null)create table Employee--员工信息(EmpId int primary key identity(1,1),DeptId int not null,EmpName varchar(50) not null,EmpPhone varchar(50) not null,EmpArea varchar(50) not null,EmpSalary decimal(18,2) not null)insert into Dept(DeptName) values('开发部')insert into Dept(DeptName) values('测试部')insert into Dept(DeptName) values('实施部')insert into Employee(DeptId,EmpName,EmpPhone,EmpArea,EmpSalary)values(1,'刘德华','13887855552','武汉',6500)insert into Employee(DeptId,EmpName,EmpPhone,EmpArea,EmpSalary)values(2,'张学友','13556528634','深圳',6500)insert into Employee(DeptId,EmpName,EmpPhone,EmpArea,EmpSalary)values(3,'刘亦菲','13448494546','广州',6500)insert into Employee(DeptId,EmpName,EmpPhone,EmpArea,EmpSalary)values(1,'周杰伦','13888666855','北京',6500)insert into Employee(DeptId,EmpName,EmpPhone,EmpArea,EmpSalary)values(2,'许巍','13868654219','上海',6500)insert into Employee(DeptId,EmpName,EmpPhone,EmpArea,EmpSalary)values(3,'孙燕姿','13895133572','成都',6500)insert into Employee(DeptId,EmpName,EmpPhone,EmpArea,EmpSalary)values(1,'朴树','13458788896','武汉',6500)insert into Employee(DeptId,EmpName,EmpPhone,EmpArea,EmpSalary)values(2,'周润发','13554588745','南京',6500)insert into Employee(DeptId,EmpName,EmpPhone,EmpArea,EmpSalary)values(3,'李连杰','13998759654','上海',6500)select * from Dept;select * from Employee;

二、数据列表

API接口:

[HttpGet]public IHttpActionResult Get(){    var data = from emp in db.Employee                join dept in db.Dept on emp.DeptId equals dept.DeptId                select new                {                    EmpId = emp.EmpId,                    DeptId = emp.DeptId,                    EmpName = emp.EmpName,                    EmpPhone = emp.EmpPhone,                    EmpArea = emp.EmpArea,                    EmpSalary = emp.EmpSalary,                    DeptName = dept.DeptName                };    return JSON(new { res = 1, msg = "", data = data });}

接口测试地址:

http://localhost:1894/api/Employee

三、组合条件搜索

接受搜索条件的实体:

public class SearchDto{public int DeptId { get; set; } //部门编号public string EmpName { get; set; } //部门名称}

API接口:

[HttpGet][Route("api/Employee/Search")]public IHttpActionResult Get([FromUri] SearchDto searchDto){    var data = from emp in db.Employee                join dept in db.Dept on emp.DeptId equals dept.DeptId                select new                {                    EmpId = emp.EmpId,                    DeptId = emp.DeptId,                    EmpName = emp.EmpName,                    EmpPhone = emp.EmpPhone,                    EmpArea = emp.EmpArea,                    EmpSalary = emp.EmpSalary,                    DeptName = dept.DeptName                };    if (searchDto.DeptId > 0)        data = data.Where(p => p.DeptId == searchDto.DeptId);    if (!string.IsNullOrEmpty(searchDto.EmpName))        data = data.Where(p => p.EmpName.Contains(searchDto.EmpName));    return json(new { res = 1, msg = "", data = data });}

接口测试:

asp.net怎么使用WebAPI和EF框架结合实现数据的基本操作

四、组合条件搜索加分页

接受搜索条件的实体:

public class SearchDto{public int DeptId { get; set; } //部门编号public string EmpName { get; set; } //部门名称}

API接口:

[HttpGet][Route("api/Employee/SearchPage")]public IHttpActionResult Get(int page,int pagesize,[FromUri] SearchDto searchDto){    var query = from emp in db.Employee                join dept in db.Dept on emp.DeptId equals dept.DeptId                select new                {                    EmpId = emp.EmpId,                    DeptId = emp.DeptId,                    EmpName = emp.EmpName,                    EmpPhone = emp.EmpPhone,                    EmpArea = emp.EmpArea,                    EmpSalary = emp.EmpSalary,                    DeptName = dept.DeptName                };    if (searchDto.DeptId > 0)        query = query.Where(p => p.DeptId == searchDto.DeptId);    if (!string.IsNullOrEmpty(searchDto.EmpName))        query = query.Where(p => p.EmpName.Contains(searchDto.EmpName));    var data = query.OrderByDescending(p => p.EmpId).ToPagedList(page, pagesize);    return Json(new { res = 1, msg = "",total=data.TotalItemCount, data = data });}

接口测试:

asp.net怎么使用WebAPI和EF框架结合实现数据的基本操作

五、数据的新增

API接口方案一:(直接使用EF中实体接受新增的数据)

[HttpPost]//此处为降低前端和EF框架实体的耦合性,也可以重新定义Dto类,然后将Dto数据通过映射,赋值到EF中Employee对象中public IHttpActionResult Add(Employee emp) {    db.Employee.Add(emp);    int r = db.SaveChanges();    if (r == 1)        return Json(new { res = 1, msg = "添加成功" });    else        return Json(new { res = 1, msg = "添加失败" });}

API接口方案二:(使用Dto接受数据,直接通过属性赋值实现Dto对象向EF实体的转换)

public class EmpADDDto{    public int EmpId { get; set; }    public int DeptId { get; set; }    public string EmpName { get; set; }    public string EmpPhone { get; set; }    public string EmpArea { get; set; }    public decimal EmpSalary { get; set; }}[HttpPost]public IHttpActionResult Add(EmpAddDto dto){    //属性依次赋值实现Dto对象向EF实体对象的转换    Employee emp = new Employee();    emp.DeptId = dto.DeptId;    emp.EmpName = dto.EmpName;    emp.EmpPhone = dto.EmpPhone;    emp.EmpArea = dto.EmpArea;    emp.EmpSalary = dto.EmpSalary;    db.Employee.Add(emp);    int r = db.SaveChanges();    if (r == 1)        return Json(new { res = 1, msg = "添加成功" });    else        return Json(new { res = 1, msg = "添加失败" });}

API接口方案三:(通过AutoMapper组件进行映射)

AutoMapper组件可以在NuGet中进行安装,经过测试在framework4.5中无法使用,在framework4.7.1中可以正常使用。

如果没有安装framework4.7.1,可以在官网下载 .NET Framework 4.7.1 Developer Pack。

如果通过项目的属性面板中修改了目标框架为framework4.7.1,程序可能会编译错误,需要修改配置文件:

compilerOptions="/langversion:6 /nowarn:1659;1699;1701"

修改成:

compilerOptions="/langversion:Default /nowarn:1659;1699;1701"

API接口代码:(两种类型属性名称完全相同的时候)

public class EmpAddDto{    public int EmpId { get; set; }    public int DeptId { get; set; }    public string EmpName { get; set; }    public string EmpPhone { get; set; }    public string EmpArea { get; set; }    public decimal EmpSalary { get; set; }}[HttpPost]public IHttpActionResult Add(EmpAddDto dto){    //两种类型属性名称相同自动映射    var config = new MapperConfiguration(cfg => cfg.CreateMap<EmpAddDto, Employee>());    var mapper = config.CreateMapper();    Employee emp = mapper.Map<Employee>(dto);    db.Employee.Add(emp);    int r = db.SaveChanges();    if (r == 1)        return Json(new { res = 1, msg = "添加成功" });    else        return Json(new { res = 1, msg = "添加失败" });}

API接口代码:(两种类型属性名称不一致的时候)

public class EmpAddDto{    public int EmpId { get; set; }    public int DeptId { get; set; }    public string Name { get; set; }    public string Phone { get; set; }    public string EmpArea { get; set; }    public decimal EmpSalary { get; set; }}[HttpPost]public IHttpActionResult Add(EmpAddDto dto){    //两种类型名属性相同自动映射    var config = new MapperConfiguration(cfg =>    {        cfg.CreateMap<EmpAddDto, Employee>()        .FORMember("EmpName", opt => opt.MapFrom(src => src.Name))        .ForMember(dest => dest.EmpPhone, opt => opt.MapFrom(src => src.Phone));        //.ForMember(dest => dest.EmpId, opt => opt.MapFrom(src => src.EmpId))        //.ForMember(dest => dest.DeptId, opt => opt.MapFrom(src => src.DeptId))        //.ForMember(dest => dest.EmpName, opt => opt.MapFrom(src => src.Name))        //.ForMember(dest => dest.EmpPhone, opt => opt.MapFrom(src => src.Phone))        //.ForMember(dest => dest.EmpArea, opt => opt.MapFrom(src => src.EmpArea))        //.ForMember(dest => dest.EmpSalary, opt => opt.MapFrom(src => src.EmpSalary));    });    var mapper = config.CreateMapper();    Employee emp = mapper.Map<Employee>(dto);    db.Employee.Add(emp);    int r = db.SaveChanges();    if (r == 1)        return Json(new { res = 1, msg = "添加成功" });    else        return Json(new { res = 1, msg = "添加失败" });}

接口测试:(使用EmpAddDto接受数据的时候注意参数名称需要和EmpAddDto的属性名相同)

asp.net怎么使用WebAPI和EF框架结合实现数据的基本操作

关于“asp.net怎么使用WebAPI和EF框架结合实现数据的基本操作”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注编程网精选频道,小编每天都会为大家更新不同的知识点。

--结束END--

本文标题: asp.net怎么使用WebAPI和EF框架结合实现数据的基本操作

本文链接: https://www.lsjlt.com/news/328352.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • asp.net使用WebAPI和EF框架结合实现数据的基本操作
    目录一、资料准备二、数据列表三、组合条件搜索四、组合条件搜索加分页五、数据的新增本章节主要介绍使用WebAPI和EF框架结合,实现数据的基本操作功能。 一、资料准备 数据库脚本: c...
    99+
    2024-04-02
  • asp.net怎么使用WebAPI和EF框架结合实现数据的基本操作
    这篇文章主要介绍“asp.net怎么使用WebAPI和EF框架结合实现数据的基本操作”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“asp.net怎么使用WebAPI和EF框架结合实现数据的基本操作”...
    99+
    2023-06-30
  • C语言数据结构堆的基本操作实现
    目录1.基本函数实现a.代码1(向下调整)b.代码2(向上调整)c.代码3(交换)2.建堆 3.插入数据4. 删除数据5.获取堆顶的数据6.堆的数据个数7.判空8.打印9.销毁10....
    99+
    2024-04-02
  • MySQL中怎么实现数据表基本操作
    MySQL中怎么实现数据表基本操作,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。数据表的基本操作1.主键约束要求主键列的数据唯一,并且不允...
    99+
    2024-04-02
  • C语言数据结构堆的基本操作实现是怎样的
    本篇文章为大家展示了C语言数据结构堆的基本操作实现是怎样的,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。1.基本函数实现a.代码1(向下调整)void AdjustDown(DateTyp...
    99+
    2023-06-21
  • PHP单例模式怎么实现数据库操作类的框架
    这篇文章主要介绍了PHP单例模式怎么实现数据库操作类的框架的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇PHP单例模式怎么实现数据库操作类的框架文章都会有所收获,下面我们一起来看看吧。在PHP中,单例是一个类有...
    99+
    2023-06-30
  • 基于pytorch怎么实现Resnet对本地数据集操作
    本文小编为大家详细介绍“基于pytorch怎么实现Resnet对本地数据集操作”,内容详细,步骤清晰,细节处理妥当,希望这篇“基于pytorch怎么实现Resnet对本地数据集操作”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来...
    99+
    2023-06-29
  • C#中怎么使用Cache框架快速实现Cache操作
    这篇“C#中怎么使用Cache框架快速实现Cache操作”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C#中怎么使用Cach...
    99+
    2023-07-02
  • Python和Unix的完美结合:如何使用框架索引您的数据
    Python和Unix都是非常强大的工具,它们各自都有着独特的优势。Python是一种高级编程语言,具有易读易写的特点,可以让用户快速地编写脚本和应用程序。而Unix则是一种操作系统,具有强大的命令行工具和管道机制,可以让用户快速地处理文...
    99+
    2023-11-05
    索引 unix 框架
  • Beam中怎么实现数据的窗口化和聚合操作
    在Beam中,可以通过使用Windowing和Aggregation来实现数据的窗口化和聚合操作。 窗口化操作: Beam提供了一...
    99+
    2024-03-15
    Beam
  • SQLServer2019 数据库的基本使用之图形化界面操作的实现
    目录一、数据库、表的创建与删除1. 创建数据库2. 修改数据库3. 删除数据库4. 创建数据表5. 删除数据表二、数据表常见操作1. 在表结构中添加新字段2. 在表结构中删除字段3....
    99+
    2024-04-02
  • PyQt5中使用QtDesigner怎么实现文本框读写操作
    PyQt5中使用QtDesigner怎么实现文本框读写操作?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。主要内容:读、写 输入控件(Input Widgets)...
    99+
    2023-06-15
  • 如何使用Go、Laravel和Spring框架实现高效的同步操作?
    在当今快节奏的互联网时代,高效的同步操作对于软件开发人员来说是至关重要的。不同的编程语言和框架提供了不同的解决方案,而本文将介绍如何使用Go、Laravel和Spring框架实现高效的同步操作。 Go语言是Google开发的一种高性能编程语...
    99+
    2023-07-09
    laravel spring 同步
  • 怎么使用Nodejs连接Mysql实现基本的增删改查操作
    这篇文章将为大家详细讲解有关怎么使用Nodejs连接Mysql实现基本的增删改查操作,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。接下来示例代码的主要技术点包括基础框架KoaKoa-routerkoa-n...
    99+
    2023-06-15
  • ASP 函数和 Spring 结合使用,如何实现数据的存储?
    在当今数字化的时代,数据存储变得越来越重要。ASP 函数和 Spring 是两个非常流行的工具,它们可以协同工作来实现数据的存储。在本文中,我们将探讨如何使用 ASP 函数和 Spring 来实现数据存储。 ASP 函数是一种服务器端脚本...
    99+
    2023-10-06
    函数 spring 存储
  • 怎么使用Vue.js全选指令实现多选框的全选操作
    这篇“怎么使用Vue.js全选指令实现多选框的全选操作”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“怎么使用Vue.js全选...
    99+
    2023-07-06
  • 如何使用MongoDB和SQL语句实现数据的增删改查操作?
    如何使用MongoDB和SQL语句实现数据的增删改查操作?数据库是存储、管理和检索数据的工具,而数据的增删改查操作是数据库的核心功能。在数据库领域中,常见的两种数据库系统是关系型数据库(SQL)和非关系型数据库(NoSQL)。关系型数据库使...
    99+
    2023-12-17
    SQL MongoDB 增删改查操作
  • 如何使用PHP7的特性实现更加灵活的数据操作和处理?
    如何使用PHP7的特性实现更加灵活的数据操作和处理?随着PHP7的发布,PHP编程语言又迈入了一个新的阶段。PHP7带来了许多令人兴奋的特性,特别是在数据操作和处理方面,提供了更多的灵活性和效率。本文将介绍如何利用PHP7的特性来实现更加灵...
    99+
    2023-10-22
    数据处理 数据操作 PHP特性
  • 微信小程序Page中怎么实现data数据操作和函数调用方法
    这篇文章主要为大家展示了“微信小程序Page中怎么实现data数据操作和函数调用方法”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“微信小程序Page中怎么实现d...
    99+
    2024-04-02
  • 如何使用PHP7的迭代器实现更加灵活的数据遍历和操作?
    如何使用PHP7的迭代器实现更加灵活的数据遍历和操作?引言:PHP7引入了一种强大的特性——迭代器(Iterator),它可以使我们在遍历和操作数据时更加灵活和高效。在本文中,我们将介绍如何使用PHP7的迭代器来实现数据的迭代和操作,并提供...
    99+
    2023-10-22
    PHP 迭代器 数据遍历
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作