tnblog
首页
视频
资源
登录

.NetCore3.1使用CodeFirst并查询数据

5511人阅读 2020/11/15 12:37 总访问:373123 评论:5 收藏:0 手机
分类: .net

.NetCore3.1使用CodeFirst并查询数据

本文为小白简洁教程,前端玩多了后端基本的忘了,所以做个笔记!
源码已上传,有需要可自行到这里去下载

目录

Code first

创建项目
下载NuGet包
添加实体
添加数据库上下文类
注入上下文类
生成数据

后续测试

添加接口并实现接口执行数据访问的业务类
控制器提供开放Api
控制器类运行测试

后言

正文

Code first

创建项目

1.创建一个WebApi项目并且命名为TodoApi
2.在该项目右键新建一个文件夹名为Module,主要放实现类,
创建TodoContext,UserInfo,UserInfoProcess三个类
2.在该项目右键新建一个文件夹名为Interface,主要接口类
创建IUserInfo接口类
在这里插入图片描述

下载NuGet包

  • 下载并引入需要用到的包:可通过控制台或直接搜索安装
    1. Microsoft.EntityFrameworkCore //EFCore框架
    2. Microsoft.EntityFrameworkCore.SqlServer //连接SQLserver依赖
    3. Microsoft.EntityFrameworkCore.Tools //工具包(数据迁移等)
    4. Microsoft.EntityFrameworkCore.Design //数据库上下文

添加实体

UserInfo.cs中创建一些字段,与数据库表对应的字段

  • 特性说明
    • [Table("UserTable")]:用于映射数据库的表名,这里映射的表名为”UserTable”,可与实体名不一致
    • [Key]映射数据库主键
  1. using System.ComponentModel.DataAnnotations;
  2. using System.ComponentModel.DataAnnotations.Schema;
  3. namespace TodoApi.Module
  4. {
  5. [Table("UserTable")]
  6. public class UserInfo
  7. {
  8. [Key]
  9. public int Id { get; set; }
  10. public string Name { get; set; }
  11. public string Password { get; set; }
  12. }
  13. }

添加数据库上下文类

  • TodoContext.cs
  1. using Microsoft.EntityFrameworkCore;
  2. namespace TodoApi.Module
  3. {
  4. public class TodoContext : DbContext
  5. {
  6. public TodoContext(DbContextOptions<TodoContext> options) : base(options) { }
  7. public DbSet<UserInfo> UserInfo { get; set; }
  8. }
  9. }

注入上下文类

  • 先在项目根目录的appsettings.json资源文件中新增根节点数据库连接字符串
    1. {
    2. "ConnectionStrings": {
    3. "UserDB": "server=127.0.0.1;database=UserDB;uid=sa;pwd=1233456;"
    4. }
    5. }
  • 配置连接字符串后在Startup.cs服务启动入口类ConfigureServices方法中获取连接字符串并添加注入上下文
    1. // 获取连接字符串
    2. string sqlstr = Configuration.GetConnectionString("UserDB");
    3. // 注入上下文
    4. services.AddDbContext<TodoContext>(option => option.UseSqlServer(sqlstr));

    生成数据

    这Code First基本完成
    通过 工具>>NuGet包管理器>>程序包管理器控制台 打开控制台
  1. 给迁移搭建基架,运行:Add-Migration InitialCreate命令,InitialCreate自定义名
    搭建基架成功后会生成一个文件夹里的基架代码(执行完第二步迁移后可删掉)
  2. 将新迁移数据创建数据库,运行:Update-Database
    迁移成功数据库会生成一个历史表(可删掉)
    可在SQL server客户端查看是否创建成功
    在这里插入图片描述

后续测试

添加接口并实现接口执行数据访问的业务类

  1. 这时候用到IUserInfo.cs了,这个接口带一个泛型,在里面写一个简单的获取用户数据的方法
  1. /// <summary>
  2. /// 用户业务逻辑层接口
  3. /// </summary>
  4. interface IUserInfo<T>
  5. {
  6. /// <summary>
  7. /// 获取用户信息
  8. /// </summary>
  9. List<T> getUserInfos();
  10. }
  1. 实现接口,UserInfoProcess.cs
  1. public class UserInfoProcess: IUserInfo<UserInfo>
  2. {
  3. //依赖注入上下文
  4. private readonly TodoContext _db;
  5. public UserInfoProcess(TodoContext todoContext)
  6. {
  7. _db = todoContext;
  8. }
  9. public List<UserInfo> getUserInfos()
  10. {
  11. // 查询id大于5的用户信息
  12. var query = _db.UserInfo.Where (a=>a.Id>5).ToList();
  13. return query;
  14. }
  15. }

控制器提供开放Api

控制器类运行测试

Controllers文件夹添加一个名为UserController空的控制器,控制器代码:

  1. [Route("api/v1/[controller]")]
  2. [ApiController]
  3. public class UserController : ControllerBase
  4. {
  5. //依赖注入
  6. private readonly UserInfoProcess _userprocess;
  7. public UserController(UserInfoProcess userprocess)
  8. {
  9. _userprocess = userprocess;
  10. }
  11. [HttpGet]
  12. [Route("GetUserInfos")]
  13. public List<UserInfo> GetUsers()
  14. {
  15. var query= _userprocess.getUserInfos();
  16. return query;
  17. }
  18. }
  • 选择控制台调试会更方便
    在这里插入图片描述
    禁用浏览器调试
    在这里插入图片描述
  • 运行程序
    通过postman请求后发现报错
    在这里插入图片描述
    错误原因:没有依赖注入UserInfoProcess.cs
    解决方案:在Startup.cs中注入UserInfoProcess.cs
  1. //依赖注入
  2. services.AddTransient<UserInfoProcess>();

添加后再次运行测试,这时候发现成功,在UserInfoProcess.cs中设置断点查看数据
在这里插入图片描述
这样子就基本完成codefrist的基本操作

后言

工作中做的项目到底有多大也不能忘了最基础的东西,此文当作一个复习,希望可以帮到小白!

评价

Session

2021/4/1 10:31:15

[good][good][good]

剑轩

2021/4/9 10:38:51

很有深度!

心酸

2021/4/13 16:01:17

[赞]

net core 使用 EF Code First

下面这些内容很老了看这篇:https://www.tnblog.net/aojiancc2/article/details/5365 项目使用多层,把数据库访问...

使用OLEDB读取不同版本Excel的连接字符串设置

使用OleBD读取excel的时候,excel不同的版本,连接字符串的写法也会不一样。///&lt;summary&gt; ///读取excel ///&lt;/su...

C 使用CancellationTokenSource取消多线程

有时间我们在使用多线程的时候,需要取消线程的执行,可以使用CancellationTokenSource来取消对Task开辟多线程的取消如下:...

使用爬虫刷csdn博客访问量

首先了解一下常见反爬虫的检测方法频率监测:有些网站会设置一种频率监测的机制,对于同一IP,若在一定时间内访问的速度超...

Idea下使用maven搭建SSM(一):SpringMVC

Spring MVC是一款基于MVC架构模式的轻量级Web框架,其目的是将Web开发模块化,对整体架构进行解耦,简化Web开发流程。下面...

Idea下使用maven搭建SSM(二):MyBatis

开发Web应用,数据的存储和处理往往离不开数据库和SQL语句。在使用Java开发的Web应用中,自然也少不了连接数据库的步骤。在...

使用 微软自带语音合成类库

//引入语音合成名称空间 usingSystem.Speech.Synthesis; classA { voidtest1() { //实例化并指定字符串播放合成读音 ...

如何使用图标像使用文字一样,使用文本图标的方法

1.首先在Iconfont-阿里巴巴矢量图标库上面找到你需要的图标然后加入你的购物车然后选择图标;注意:每个类型的图标会大小不...

使用七牛云的cdn服务,提高图片的加载速度

CDN介绍CDN的全称是Content Delivery Network,即内容分发网络。CDN加速主要是加速静态资源,如网站上面上传的图片、媒体,...

.net core 使用session

tip:net core 2.2后可以直接启用session了,不用在自己添加一次session依赖,本身就添加了使用nuget添加引用Microsoft.AspN...

使用OutLook发送邮件

publicstaticvoidOutlook(stringSubject,stringTextBody,stringFromAdd,stringFromPass,stringTo,stringCC,List&lt;string&...

SQL Server 中使用游标

--声明一个游标 DECLAREMyCursorCURSOR FORSELECTTOP5FBookName,FBookCodingFROMTBookInfo//定义一个叫MyCursor的游标,...

Windows使用wireshark抓包小心得

wireshrak是个网络抓包工具,常用。但是在数据较大的网络环境中直接使用软件抓包会导致wireshark卡死。为什么呢 ?网卡瞬间...

Oracle自定义函数的简单使用

一.最最最简单的返回一个数字的函数createorreplacefunctionfun_show returnint--申明返回值 as begin return1; end;...

Oracle事务的简单使用

事务:  事务是一个整体,这些操作要么全部执行成功,要么全部不执行。使用事务的原因:保证数据的安全有效。事务的四个特...

Oracle使用游标

其实游标就是把查询的结果放入游标中,然后在去游标里边读取。相当于使用游标做了一个中转,而游标是可以作为参数进行传递...
不帅~~但是很暖心.....
排名
40
文章
11
粉丝
3
评论
0
申请别的接口数据(网络接口)
是伍尚金哇 : 敲一夜代码,流下两三行泪水,掏空四肢五体,六杯白开水七桶泡面
mui框架-移动端跳转以及传值的简单方法(修改解决方法)
是伍尚金哇 : 测试了 可以直接在 extras: { userid:'10' //自定义扩展...
数据库的varchar和nvarchar的区别
是伍尚金哇 : 没人看 自己看一个 温习一下
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术
你可以期待太阳从东方升起,而风却随心所欲地从四面八方吹来。