注: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. vue 路由视图,router-view嵌套跳转

    实现功能:制作一个登录页面,跳转到首页,首页包含菜单栏.顶部导航栏.主体,标准的后台网页格式.菜单栏点击不同菜单控制主体展示不同的组件(不同的页面). 配置router-view嵌套跳转需要准备两个主 ...

  2. docker for zabbix

    docker run -d -v /home/zabbix/mysql --name zabbix-db-storage busybox:latest docker run -d --name zab ...

  3. linux 档案权限篇之一

    一:预备知识 1.在linux中,任何一个档案都具有.所有者.用户组.其他用户这三种身份的个别权限. 1.所有者:即档案拥有者,由于Linux是多人多任务的系统,因此可能常常会有很多人同时使用这部主机 ...

  4. JavaScrip中 Array.reduce()

    数组的方法 reduce() reduce方法在数组的每一项元素上都会执行回调函数. 语法:array.reduce( callBack [ , init]  ) // 语法arrary.reduce ...

  5. python中reduce filter map lambda函数

    lambda函数 python 使用 lambda 来创建匿名函数,lambda返回值是一个函数的地址,也就是函数对象. 语法:lambda [arg1 [,arg2,.....argn]]:expr ...

  6. 【简单数据结构】二叉树的建立和递归遍历--洛谷 P1305

    题目描述 输入一串二叉树,用遍历前序打出. 输入格式 第一行为二叉树的节点数n.(n \leq 26n≤26) 后面n行,每一个字母为节点,后两个字母分别为其左右儿子. 空节点用*表示 输出格式 前序 ...

  7. Django学习day07随堂笔记

    今日考题 """ 今日考题 1.必知必会N条都有哪些,每个都是干啥使的 2.简述神奇的双下划线查询都有哪些方法,作用是什么 3.针对多对多外键字段的增删改查方法有哪些,各 ...

  8. Android View post 方法

    解析View.post方法.分析一下这个方法的流程. 说起post方法,我们很容易联想到Handler的post方法,都是接收一个Runnable对象.那么这两个方法有啥不同呢? Handler的po ...

  9. final关键字在PHP中的使用

    final关键字的使用非常简单,在PHP中的最主要作用是定义不可重写的方法.什么叫不可重写的方法呢?就是子类继承后也不能重新再定义这个同名的方法. class A { final function t ...

  10. seo执行步骤

    第一个金字塔策略这个很适用于大型网站,我想做过大型网站,特别是关键词比较多比较杂乱的站长来说,这个图太熟悉不过了,就算是没有见过,但实际操作中早就用到了这些手法.如果能把这个图领会透并实际应用,做一个 ...