SqlSugar之DbContext】的更多相关文章

创建一个DbContext和DbSet进行使用,我们可以在DbSet中进行扩展我们的方法 //可以直接用SimpleClient也可以扩展一个自个的类 //推荐直接用 SimpleClient //为了照顾需要扩展的朋友,我们就来扩展一个SimpleClient,取名叫DbSet public class DbSet<T> : SimpleClient<T> where T : class, new() { public DbSet(SqlSugarClient context)…
背景 SqlSugar是一款国产ORM,除了拥有媲美原生的性能 另外还有满足各种需求的功能,简单好用一分钟就能够轻松上手. 2.x版本正式在自已公司内部项目使用 3.x版本得到了更多公司的喜欢不过也会抱怨有很多不足 4.x版本17年5月发布后得到的评价超出了我的预期, 刚发布的时候做了大量的单元测试,不过还是有不少BUG,经过大量的用户反馈8月份左右成型和稳定,并且大量的项目得到交付,也得到了使用者的好评,现在我认为是一个较出色的版本所以我才开始写这篇文章介绍它 5.x版本 预计今年的5月份发布…
SqlSugar在查询的功能是非常强大的,多表查询.分页查询 . 一对一查询.二级缓存.一对多查.WhenCase等复杂函数.Mapper功能.和拉姆达自定义扩展等,用好了是可以做到真正零SQL的一款ORM. 首先将SqlSugar更新到4.8版本,下面我就来一一讲解每种查询的写法 创建DbContext public class DbContext { public DbContext() { Db = new SqlSugarClient(new ConnectionConfig() { C…
SqlSugar NET 4.+ & .NET CORE 高性能 轻量级 ORM框架,众多.NET框架中最容易使用的数据库访问技术 MongoDB与MySql的安装省略...虽然遇到了一些意外的情况,也花了一些时间,但是网上大都能找到解决方法,就不赘述了. 测试过程中使用的所有第三方库文件都可以通过Nuget获取:MySql.Data.dll,Newtonsoft.Json.dll,SqlSugar.dll,MongoDB.Driver.dll,MongoDB.Bson.dll 本文记录,对10…
/// <summary> /// SqlSugar 注入Service的扩展方法 /// </summary> public static class SqlSugarServiceCollectionExtensions { /// <summary> /// SqlSugar上下文注入 /// </summary> /// <typeparam name="TSugarContext">要注册的上下文的类型</ty…
首先简单封装了个DbContext public class DbContext { #region 属性字段 private static string _connectionString; /// <summary> /// 连接字符串 by beck.huang 2018-05-08 09:56:05 /// </summary> public static string ConnectionString { get { return _connectionString; }…
一.Sqlsugar简介 1.性能上有很大优势 sqlsugar是性能最好的ORM之一,具有超越Dapper的性能 ,走的是EMIT够构中间语言动态编译到程序集,完成高性能的实体绑定,达到原生水平. 2.功能非常强大 除了EF以外可以说的是功能最大的ORM框架 支持 DbFirst.CodeFirst.数据库维护.链式查询.链式更新.链式删除.链式插入.实体属性.复杂模型的查询.ADO.NET.特别是批量等功能都是货真价实的并非循环操作. SqlSugar 4.0版本 6月底支持SqlSever…
0. 前言 继上一篇,以及上上篇,我们对SqlSugar有了一个大概的认识,但是这并不完美,因为那些都是理论知识,无法描述我们工程开发中实际情况.而这一篇,将带领小伙伴们一起试着写一个能在工程中使用的模板类. 1. 创建一个Client SqlSugar在操作的时候需要一个Client,用来管理数据库连接,并操作数据库.所以我们写一个DbContext用来创建Client: public class DefaultContext { public SqlSugarClient Client {…
在我的各种开发框架中,数据访问有的基于微软企业库,有的基于EFCore的实体框架,两者各有其应用场景,不过多的去比较.最近在使用SqlSugar的时候,觉得这个数据访问处理的组件确实很灵活,据说性能也是很不错,于是用来整合测试一下,它对多种关系型数据库如SqlServer.Oracle.Mysql.SQLite.PostgreSQL都很容易提供支持,通过特性标注的方式,可以很好的实现数据访问的处理,这点很类似EfCore的处理,同时SqlSugar又提供很灵活的SQL处理操作.因此多花了一些时间…
由于我们有时候需要在基于.net framework的项目上使用(如Winform端应用),有时候有需要在.net core的项目上使用(如.net core的WebAPI),那么我们把基于SQLSugar的基础模块封装,编译为.net standard就很有必要,而且由于.net framework和.net core在配置文件上的差异,我们需要对基础配置信息进行不同环境的兼容处理,以便实现基础模块支持.net FrameWork和.net core的项目调用. 1.基于.netStandar…
在前面介绍的SqlSugar的相关查询处理操作中,我们主要以单表的方式生成相关的实体类,并在查询的时候,对单表的字段进行条件的对比处理,从而返回对应的数据记录.本篇随笔介绍在一些外键或者中间表的处理中,如何遍历查询并获得所需的记录操作. 1.回顾单表的操作查询 我在<基于SqlSugar的开发框架的循序渐进介绍(1)--框架基础类的设计和使用>中介绍过的Customer表信息,就是一个单表的处理. 例如,我们对于一个简单的客户信息表,如下所示. 生成对应的实体对象CustomerInfo外,同…
我们在设计数据库表的时候,往往为了方便,主键ID一般采用字符串类型或者GUID类型,这样对于数据库表记录的迁移非常方便,而且有时候可以在处理关联记录的时候,提前对应的ID值.但有时候进行数据记录插入的时候,往往忽略了对ID的赋值处理.为了便于使用或者允许自动赋值,我们可以在数据访问基类中对GUID主键进行自动赋值处理. 1.实体类主键属性的处理 在我们设计基于SqlSugar的框架的时候,实体类定义一个基类Entity<T>,如下代码所示. [Serializable] public abst…
在基于SqlSugar的开发框架中,我们设计了一些系统服务层的基类,在基类中会有很多涉及到相关的数据处理操作的,如果需要跟踪具体是那个用户进行操作的,那么就需要获得当前用户的身份信息,包括在Web API的控制器中也是一样,需要获得对应的用户身份信息,才能进行相关的身份鉴别和处理操作.本篇随笔介绍基于Principal的用户身份信息的存储和读取操作,以及在适用于Winform程序中的内存缓存的处理方式,从而通过在基类接口中注入用户身份信息接口方式,获得当前用户的详细身份信息. 1.用户身份接口的…
前言 上一篇我们简单讲述了在EF Core1.1中如何进行迁移,本文我们来讲讲EF Core1.1中那些不为人知的事,细抠细节,从我做起. 显式创建DbContext实例 通过带OnConfiguring的构造函数 这个想必是我们最简单的方式了吧,通过调用继承自DbContext的类并且调用它的无参构造函数,同时我们需要谨记的时每当实例化时我们都需要将其释放也就是将其实例包裹在Using中.如下: using (var context = new EFCoreContext()) { } 接着通…
DBContext: 在之前的章节<创建实体数据模型>中,EDM为我们创建了SchoolDBEntities 类,它派生子System.Data.Entity.DbContext这个类,这个DbContext在EF中被称作上下文类. 在EF4.1之前,EDM生成的上下文类是派生自ObjectContext这个类的.它有点难于使用.DbContext 在概念上类似于ObjectContext.DbContext 只是对ObjectContext 进行了封装使其更容易在所有开发场景中使用.(如Co…
水平有限,欢迎指正.原文:http://blogs.msdn.com/b/diego/archive/2012/01/10/how-to-execute-stored-procedures-sqlquery-in-the-dbcontext-api.aspx 在 Entity Framework 4.1中引入的DbContext API暴露了一些新的方法用于提供透传原生SQL给数据库执行查询和命令,比如 Database.SqlQuery<T>, 以及 Database.ExecuteSqlC…
返回总目录<一步一步使用ABP框架搭建正式项目系列教程> 上一篇介绍了<创建实体>,这一篇我们顺其自然地介绍<创建DbContext>. 温故: 提到DbContext,对于经常使用DbFirst模式的开发者来说已经再熟悉不过了,EntityFramework全靠这员大将.它的作用是代表与数据库连接的会话,提供了查询.状态跟踪.保存等功能. 还有一个重要的对象是DbSet,对实体类型提供了集合操作,比如Add.Attach.Remove.继承了DbQuery,所以可以提…
3.1.x ,将作为3.X系统的最后一个版本,下面将会开发 全新的功能 更新列表:https://github.com/sunkaixuan/SqlSugar/releases 优点: SqlSugar 是一款小巧,并且功能齐全的ORM,并不需要像Dapper一样依赖第三方扩展 SqlSugar 语法易用简单 ,有漂亮的拉姆达语法,也支持Dapper SQL和ADO.NET的所有功能 SqlSugar 性能达到原生水准,远超 Dapper和EF CORE. SqlSugar 支持.NET COR…
1.DbContext怎么在Asp.mvc中使用? public class Repository { //实例化EF容器:有弊端.一个线程里可能会创建多个DbContext //DbContext db = new DbContext(); //改造:保证一个请求线程中只有一份EF容器(你要明白:一个url请求到服务器,IIS就开一个线程去处理) protected DbContext GetDbContext { get { //向线程缓存中查询,如果返回的是null,则创建,同时存入到这个…
本文版权归博客园和作者吴双共同所有,欢迎转载,转载和爬虫请注明博客园蜗牛原文地址 http://www.cnblogs.com/tdws/p/5874212.html. 目前国内各大论坛,各位大牛的分享,是按照Microsoft官方文档,在Web层直接应用EF Core.当然这并没有什么问题,因为我也要从文档开始分享.唯一多的一点就是在Dal层中调用DbContext的方法.你以前用的EF6.x,如果在测试代码中你可以直接new出来,在正式的项目开发中,你控制上下文线程内唯一时,也可以new一个…
对于之前一直使用webForm服务器控件.手写ado.net操作数据库的同学,突然来了EF和MVC,好多新概念泉涌而出,的确犹如当头一棒不知所措.本系列文章可以帮助新手入门并熟练使用EF和MVC,有了这个基础以后再学习后续新版的EF以及MVC,自然简单许多了.祝好运! 一.EF Code First EF Code First系列文章译自Julie Lerman和Rowan Miller编写的Programming Entity Framework: Code First,主要讲解EF是如何通过…
现在许多Web项目都使用了IOC的DI注入组件.其中对象的生命周期管理是非常重要的. 有时我们为了提高请求的响应,经常在请求线程中执行多个子线程,然而忽略了EF的DbContext的生命周期管理. DbContext并非是线程安全的.子线程A和子线程B 可能同时的对同一个DbContext进行操作,从而导致下面的异常(可能随机抛出其中一个). 所以建议不要共用同一个DbContext. {"已有打开的与此 Command 相关联的 DataReader,必须首先将它关闭."} “Sys…
DbContext.DbSet及DbQuery是Entity Framework Code First引入的3个新的类,其中DbContext用于保持数据库会话连接,实体变化跟踪及保存,DbSet用于暂存实体类的变化跟踪,DbQuery用于提供查询跟你. 1.使用Set查询全部记录 使用DbContext查询首先需要保证DbContext的实例在使用完之后对资源的释放,释放DbContext实例资源的方法有两种:采用using代码块结构和调用DbContext实例的Dispose()方法. us…
今天在开发项目的时候,使用 EF,突然遇到了这样一个错误: An entity object cannot be referenceed by multiple instances of IEntityChangeTracker 这个异常我想大家应该很熟悉,大致的意思是 EF 实体操作不在同一个 DbContext,我贴下出现错误的代码: public class AdTextUnitService : IAdTextUnitService { private IAdTextUnitReposi…
先看这一段异常信息: A second operation started on this context before a previous asynchronous operation completed. Use 'await' to ensure that any asynchronous operations have completed before calling another method on this context. Any instance members are no…
生成实体就是这么简单,只要建一个T4文件和 文件夹里面放一个DLL. 使用T4模板教程 步骤1 创建T4模板 ,一定要自已新建,把T4代码复制进去,好多人因为用我现成的T4报错(原因不明) 点击添加文件,选择[ 运行时文本模版](后缀为 .tt)取个名字点确定. 步骤2 设置当前T4所需要的序集并且引用 SqlSugar.dll 编写连接数据库代码 调用SqlSugar生成实体函数,填写参数. 图片看不清楚看下面代码 <#@ template debug="false" host…
SugarSite一个前端支持移动端的企业网站,目前只支持了简单功能,后续还会加上论坛等. 源码GIT地址: https://github.com/sunkaixuan/SugarSite 技术介绍 Layui 个人而言不喜欢引用一堆东西,越简洁越好,layui正好能够满足我的这种需求,它是一款轻量级UI,JS部分都是采用模块化设计(AMD) ,对移动端支持比较不错. 唯 一不足是目前支持的组件有些少,需要有一定前端扩展能力的人才可以顺心使用. 用法: 例如我想用form.js和uploda.j…
目前只有MYSQL版 3.5.2.9 支持,其库版本12月3号更新该功能 用例讲解 using (var db = new SqlSugarClient("主连接字符串", "从连接字符串","可以多个从连接")) { var list= db.Queryable<Student>().ToList();//走从 var list= db.Queryable<Student>().ToJson();//走从 db.Inse…
CUP和.NET SQL版本不同也会存在少许差距,但不会有质变,下面的测试结果仅供参考 比赛规则 1.统一使用Realse版本的最新 DLL,Realse模式启用程序 2.为了平衡CPU和数据库空闲情况,使用车轮战,每场比赛连续10回合比试 3.多次重启电脑取平均成绩上图 比赛成员 1.SqlSugar 3.1.01 2.Dapper 1.5.0.2  Dapper.Contrib 1.5 官方DLL 第一场 :查询所有  ,主要比拼数据转换实体的性能 每次查询100万条数据 SqlSugar…
http://blog.csdn.net/lvjin110/article/details/24642911 ObjectContext是一种模型优先的开发模式,DbContext是代码优先的开发模式.这是两者最根本的区别. 同时两者之间可以相互转换: 下面给出转换的例子 1  DbContext转为ObjectContext using System.Data.Entity.Infrastructure ObjectContext context =((IObjectContextAdapte…