定义一个仓储类:IRepository

/// <summary>/// EFCore数据操作基本仓储接口/// </summary>/// <typeparam name="T"></typeparam>public interface IRepository<TModel> where TModel: class{/// <summary>/// 新增/// </summary>/// <param name="TModelModel"></param>void Add(TModel TModelModel);/// <summary>/// 删除/// </summary>/// <param name="Id"></param>void Delete(object Id);/// <summary>/// 修改/// </summary>/// <param name="TModelModel"></param>void Update(TModel TModelModel);/// <summary>/// 根据主键查询单个/// </summary>/// <param name="Id"></param>/// <reTModelurns></reTModelurns>TModel GetSingle(object Id);/// <summary>/// 返回列表/// </summary>/// <reTModelurns></reTModelurns>IEnumerable<TModel> GetList();/// <summary>/// 获取数据库上下文/// </summary>DbContext dbContext { get; }/// <summary>/// 获取该实体类型/// </summary>DbSet<TModel> Entities { get; }}

再定义一个仓储类的实现:

 public class EfRepository<TModel> : IRepository<TModel> where TModel : class{private readonly CoreContext _coreContext;public EfRepository(CoreContext coreContext){this._coreContext = coreContext;}public DbContext dbContext{get{return _coreContext;}}public DbSet<TModel> Entities{get{return _coreContext.Set<TModel>();}}public void Add(TModel model){_coreContext.Add(model);_coreContext.SaveChanges();}public void Delete(object Id){var entity = GetSingle(Id);if (entity != null){_coreContext.Remove(entity);_coreContext.SaveChanges();}}public IEnumerable<TModel> GetList(){return _coreContext.Set<TModel>().ToList();}public TModel GetSingle(object Id){return _coreContext.Set<TModel>().Find(Id);}public void Update(TModel model){_coreContext.Update(model);}}

Ps:CoreContext是使用EF框架自动生成的数据库上下文,有疑惑移步:

https://note.youdao.com/ynoteshare1/index.html?id=e1a48103e47ae5ba4b76d0ce7b277743&type=note

使用的时候再Starup中注入:

services.AddScoped(typeof(IRepository<>), typeof(EfRepository<>));

Asp.net Core3.0-------------------数据仓储的封装和使用。相关推荐

  1. 好消息,scott的asp.net 2.0数据导航系列全部出版了

    好消息,scott的asp.net 2.0数据导航系列全部出版了 好消息,scott的asp.net 2.0数据导航系列全部出版了,大师级的作品,共75篇, 分VB.NET和 c#版本,全面系统讲解了 ...

  2. ASP.NET 2.0数据教程之三十六 在DataList里编辑和删除数据

    导言 概述插入.更新和删除数据 里我们已经学习了如何使用GridView等控件来插入,更新删除数据.通过ObjectDataSource和其它数据控件仅仅只需要在智能标签里勾一下checkbox就完成 ...

  3. Scott Mitchell 的ASP.NET 2.0数据教程之四十五::DataList和Repeater数据排序

    Scott Mitchell 的ASP.NET 2.0数据教程之四十五::DataList和Repeater数据排序(一) 原文 | 下载本教程中的编码例子 | 下载本教程的PDF版 (以后比较长的部 ...

  4. [翻译]Scott Mitchell 的ASP.NET 2.0数据教程之十三:在DetailsView控件中使用TemplateField...

    导言 比起BoundField.CheckBoxField.HyperLinkField以及其他的那些数据字段控件(data field controls)来说,TemplateField提供了一种高 ...

  5. Scott Mitchell 的ASP.NET 2.0数据教程之一: 创建一个数据访问层

    原文 | 下载本教程中的编码例子 | 下载本教程的英文PDF版 导言 作为web开发人员,我们的生活围绕着数据操作.我们建立数据库来存储数据,写编码来访问和修改数据,设计网页来采集和汇总数据.本文是研 ...

  6. Scott Mitchell 的ASP.NET 2.0数据教程之十一: 基于数据的自定义格式化

    介绍 我们可以通过控制HeaderStyle, RowStyle, AlternatingRowStyle和其他一些属性来改变GridView, DetailsView, 和 FormView的样式, ...

  7. Scott Mitchell 的ASP.NET 2.0数据教程之二十一:: 实现开放式并发

    在ASP.NET 2.0中操作数据:实现开放式并发 下载本教程中的编码例子 | 下载本教程的PDF版 导言 对于那些仅仅允许用户查看数据,或者仅有一个用户可以修改数据的web应用软件,不存在多用户并发 ...

  8. Scott Mitchell 的ASP.NET 2.0数据教程之三十九:: 在编辑和插入界面里添加验证控件...

    原文 | 下载本教程中的编码例子 | 下载本教程的PDF版 导言 到目前为止的讨论编辑DataList的教程里,没有包含任何验证用户的输入,即使是用户非法输入- 遗漏了product的name或者负的 ...

  9. Scott Mitchell 的ASP.NET 2.0数据教程之四十四::DataList和Repeater数据分页

    原文 | 下载本教程中的编码例子 | 下载本教程的PDF版 导言 分页和排序是显示数据时经常用到的功能.比如,在一个在线书店里搜索关于ASP.NET 的书的时候,可能结果会是成百上千,而每页只列出十条 ...

最新文章

  1. 你必须知道的.Net 读书笔记----new 关键字 和const readonly
  2. Asp.net设计模式笔记之一:理解设计模式
  3. python进程线程协程区别_Python3多线程与协程
  4. 安卓 camera 调用流程_[Camera]Camera1 open、preview、take picture流程分析(3)
  5. leetcode53. 最大子数组和(动态规划)
  6. win2008 php mysql zend phpmyadmin_Windows2008 最新版Apache2.PHP5.MySQL6.PHPMyadmin.ZendOptimizer安装图解...
  7. linux iptables找不到,centos /etc/sysconfig/下找不到iptables文件解决方法
  8. python while循环if_初入python 用户输入,if,(while 循环)
  9. Spring集成Quartz定时任务 ---- 定时执行
  10. 遍历所有点的最短路径python_Python:如何优化所有可能的最短路径的计数?
  11. android auto凯迪拉克,凯迪拉克支持Apple CarPlay及Android Auto
  12. jquery版本之间的冲突
  13. h计算机二级基础知识题库,2020计算机二级Office考试题库真题
  14. MATLAB怎么输入无穷小,matlab如何输入代码
  15. 支付宝对账单CSV解析
  16. mysql查看表内容 很乱_mysql数据表字符混乱问题解决办法
  17. centos8安装jdk
  18. Yet Another Text Captcha Solver: A Generative Adversarial Network Based Approach
  19. 详解区块链项目如何做主体搭建?
  20. 这是一个用notepad++和masm5.0搭建的汇编环境

热门文章

  1. 雅思备考-口语词组积累-第4章
  2. python 抓取解析接口数据_[干货]用python抓取摩拜单车API数据并做可视化分析(源码)...
  3. 单张PPT转成单张PDF的PDF文件怎么设置打印出一页纸有6页PPT
  4. 一、微服务 和 Spring Cloud Alibaba
  5. 11.java设计模式(读书笔记)享元模式
  6. 《Linux就该这么学》
  7. 麦兜的日常 学习JAVA第二天 Dos简单命令操作
  8. 在自己电脑上安装Haskell/Chocolatey/VSCode/Git (Windows)
  9. IncompatibleClassChangeError异常
  10. 盘点:刺激消费 手淘店铺装修不可错过的5大模块