注:EFCore和EF有区别,在core中写的也有一点区别,每个人写法不同仅供参考
写的比较细致耐性一点看完会有收获的

首先加上必要的引用

using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.ChangeTracking;
using Microsoft.EntityFrameworkCore.Infrastructure;

然后在自己创建好的类文件里面写

namespace MS.Services.Data
{
public class MSDb : DbContext //引用DbContext
{
public MSDb(DbContextOptions<MSDb> options) : base(options)//传到基层,类似为实例化一下可写可不写
{
}
DbSet<TEntity>可用于查询和保存的实例 TEntity 。 针对的 LINQ 查询 DbSet<TEntity> 将转换为针对数据库的查询
public virtual DbSet<User> Users { get; set; }//跟写实体类一样定义几个和数据库交互的字段
public virtual DbSet<Enterprise> Enterprises { get; set; }
}
}

第二步调用上面的MSDb,我这里是换了一个类写的

namespace MS.Services.Data
{
public class Model
{
protected MSDb DbContext { get; private set; } public Model(CertMSDb dbContext)
{
DbContext = dbContext;
}
}
}

第三步加点关键性的方法

namespace MS.Services.Data
{
public class Model
{
protected MSDb DbContext { get; private set; } public Model(CertMSDb dbContext)
{
DbContext = dbContext;
} 这是基本的保存更改,你进行处理的数据处理的是取出来在程序里面的,需要保存更改才能真正修改数据库数据
public void SaveChanges()
{
DbContext.SaveChanges();
}
目前考虑高并发基本都是用异步保存更改的,这个用的是最多的
public async Task SaveChangesAsync()
{
await DbContext.SaveChangesAsync();
}
}
}

还有就是这个当然有直接的增删改查,但是直接存会有很多问题比如:1.当很多条数据在不同的表里面的时候那就需要一条一条每个表存一次,2.当高并发的时候处理数据的时候,A才存了一半,而B覆盖了A的一半,这个时候A又覆盖了B的前一半乱了的问题,3.处理速度问题
必要的时候也用这种

        public virtual async Task<T> AddCoreAsync<T>(T model)
{
return DbContext.Add<T>(model).Entity;
}
public virtual IQueryable<T> Query<T>()
{
return DbContext.Set<T>();
}

最终呈现的就是下面的样子

namespace MS.Services.Data
{
public class Model
{
protected MSDb DbContext { get; private set; } public Model(CertMSDb dbContext)
{
DbContext = dbContext;
}
public void SaveChanges()
{
DbContext.SaveChanges();
}
public async Task SaveChangesAsync()
{
await DbContext.SaveChangesAsync();
}
public virtual async Task<T> AddCoreAsync<T>(T model)
{
return DbContext.Add<T>(model).Entity;
}
public virtual IQueryable<T> Query<T>()
{
return DbContext.Set<T>();
}
}
}

最后一步就是使用了 ,注意我换了一个文件定义,不建议写一起,改起来不方便
定义一下,方便到处使用

namespace MS.Services
{
引用写好的EF处理的类传入我要自己的实体类
public class UserService : Model<User>
{
//实例化一下,免得后面还要进行处理
public UserService(MSDb dbContext) : base(dbContext) { }
}
}

接下来就是使用阶段,怎么使用我们定义好的,上面定义好了不需要第二次处理

namespace MS.WebApi.Controllers
{
public class UserController
{
调用上面我们处理好了的类直接使用就可以了
private readonly UserService _userService;
public UserController(UserService userService)
{
_userService = userService;//日常实例一下
}
public async Task<IActionResult> List(LoginDto dto)
{
使用就是这样使用,默认查询到所有数据,没有筛选
var result = await _userService.Query();
}
}
}

如果加条件的话可以使用PredicateBuilder进行筛选,条件判断  需要了解PredicateBuilder相关点下方链接

     public async Task<IActionResult> List(Model filter)
{
var express = PredicateBuilder.New<Result>()
.And(x => x.Id == filter.Id)
.And(x => x.Title==filter.Title);
var result = await _userService.Query(express);
// 或者不习惯可以用
var result = await _userService.Query().where(express);
}

PredicateBuilder详细讲解使用方法:https://www.cnblogs.com/liaote/p/15411845.html

希望上述能帮到你

Asp.net Core使用EFCore+Linq进行操作的更多相关文章

  1. asp.net core 与EFcore 入门

    什么是EFcore? Entity Framework (EF) Core 是轻量化.可扩展和跨平台版的常用 Entity Framework 数据访问技术,EF Core 可用作对象关系映射程序 ( ...

  2. ASP.NET Core 1.0 使用 Dapper 操作 MySql(包含事务)

    操作 MySql 数据库使用MySql.Data程序包(MySql 开发,其他第三方可能会有些问题). project.json 代码: { "version": "1. ...

  3. ASP.NET Core Web API Cassandra CRUD 操作

    在本文中,我们将创建一个简单的 Web API 来实现对一个 “todo” 列表的 CRUD 操作,使用 Apache Cassandra 来存储数据,在这里不会创建 UI ,Web API 的测试将 ...

  4. ASP.NET Core使用HostingStartup增强启动操作

    概念 在ASP.NET Core中我们可以使用一种机制来增强启动时的操作,它就是HostingStartup.如何叫"增强"操作,相信了解过AOP概念的同学应该都非常的熟悉.我们常 ...

  5. asp.net core 之静态文件目录的操作

    文章前言 之前写了一篇关于模拟登录的文章,自我感觉内容不太丰富,今天的这篇文章,希望在内容上能丰富些.本人缺少写文章的经验,技术上也是新手,但我会努力的,希望大家多多支持小弟. asp.net cor ...

  6. [译]ASP.NET Core 2.0 本地文件操作

    问题 如何在ASP.NET Core 2.0中受限地访问本地目录和文件信息? 答案 新建一个空项目,修改Startup类,添加访问本地文件所需的服务: public void ConfigureSer ...

  7. Angualr+asp.net core webapi+efcore系列

    想着学习一门前端框架,WTF,看了又看,卧槽对于.Net程序员来说,还有什么比面向对象更香的呢,所以果断的选择了Angular.正好看各路大神以及官方文档想学习一下asp.net core,那就搞起吧 ...

  8. Asp.Net Core Identity+EFCore + Mysql踩坑记录

    搭建基础框架准备试试传说中的Identity,本以为很顺利,结果一路踩了N多坑 遂就把过程记录下来.方便自己以后查看,也希望能帮到遇到同样问题的朋友. 1.首先,引入Identity需要的类库,还有M ...

  9. ASP.NET Core使用EPPlus操作Excel

    1.前言 本篇文章通过ASP.NET Core的EPPlus包去操作Excel(导入导出),其使用原理与NPOI类似,导出Excel的时候不需要电脑上安装office,非常好用 2.使用 新建一个AS ...

随机推荐

  1. Reader字符输入流和InputStreamReader和FileReader

    1.FileReader  extends InputStreamReader extends Reader 其中,Reader字符输入流和InputStreamReader和FileReader为字 ...

  2. Linux之crontab命令

    简介 通过crontab 命令,我们可以在固定的间隔时间执行指定的系统指令或 shell 脚本.时间间隔的单位可以 是分钟.小时.日.月.周及以上的任意组合.这个命令非常适合周期性的日志分析或数据备份 ...

  3. JS预编译过程

    GO和AO 变量的预编译 实例1 console.log(a); var a=1; console.log(a); 实际编译过程: 将a存入预编译对象中,赋值为undefined: 真正的赋值语句当程 ...

  4. CodeForce-808C Tea Party(结构体排序贪心)

    Tea Party CodeForces - 808C 现在有 n 个杯子,每个杯子的容量为 a1, a2, ..., an.他现在一共有 w 毫升茶 (w ≤ a1 + a2 + ... + an) ...

  5. 引人遐想,用 Python 获取你想要的 “某个人” 摄像头照片

    仅用来学习,希望给你们有提供到学习上的作用. 1.安装库 需要安装python3.5以上版本,在官网下载即可.然后安装库opencv-python,安装方式为打开终端输入命令行. 2.更改收件人和发件 ...

  6. 学习PHP中统计扩展函数的使用

    做统计相关系统的朋友一定都会学习过什么正态分布.方差.标准差之类的概念,在 PHP 中,也有相应的扩展函数是专门为这些统计相关的功能所开发的.我们今天要学习的 stats 扩展函数库就是这类操作函数. ...

  7. 关于php的ini文件相关操作函数浅析

    在小公司,特别是创业型公司,整个服务器的搭建一般也是我们 PHP 开发工程师的职责之一.其中,最主要的一项就是要配置好服务器的 php.ini 文件.一些参数会对服务器的性能产生深远的影响,而且也有些 ...

  8. vue注意点

    template下面只能有一个节点,不能是多个

  9. mysql语句alter添加 字段

    alter table ylh_coupon add is_reg int default 0 给数据表 ylh_coupon 添加一个字段 is_reg,,整型,默认值为0

  10. Java对象构造

    关于对象构造的一些认识. 默认域初始化 如果在构造器中没有显示地给域赋予初值,那么就会被自动地赋予默认值:数值为0,布尔值为false,对象引用为null.然而,这显然是不安全的,在一个null引用上 ...