EntityFramework

第二十三节: EF性能篇(三)之基于开源组件 Z.EntityFrameWork.Plus.EF6解决EF性能问题

你离开我真会死。 提交于 2020-07-26 06:07:13
第二十三节: EF性能篇(三)之基于开源组件 Z.EntityFrameWork.Plus.EF6解决EF性能问题 参考文章: (1)第二十三节: EF性能篇(三)之基于开源组件 Z.EntityFrameWork.Plus.EF6解决EF性能问题 (2)http://www.cnblogs.com/yaopengfei/archive/2018/06/26/9226328.html 备忘一下。 来源: oschina 链接: https://my.oschina.net/u/4397179/blog/4322639

C#的dapper使用

感情迁移 提交于 2020-07-26 04:32:24
Dapper是一款轻量级ORM工具( Github )。如果你在小的项目中,使用Entity Framework、NHibernate 来处理大数据访问及关系映射,未免有点杀鸡用牛刀。你又觉得ORM省时省力,这时Dapper 将是你不二的选择。 为什么选择Dapper 轻量。只有一个文件( SqlMapper.cs ),编译完成之后只有120k(好象是变胖了) 速度快。Dapper的速度接近与IDataReader,取列表的数据超过了DataTable。 支持多种数据库。Dapper可以在所有Ado.net Providers下工作,包括sqlite, sqlce, firebird, oracle, MySQL, PostgreSQL and SQL Server 可以映射一对一,一对多,多对多等多种关系。 性能高。通过Emit反射IDataReader的序列队列,来快速的得到和产生对象,性能不错。 支持FrameWork2.0,3.0,3.5,4.0,4.5 Dapper的安装 方法一:使用NuGet安装 打开visual studio的项目,依次点击 工具 , NuGet包管理器 , 管理解决方案的NuGet程序包 ; 再点击 浏览 , 搜索dapper , 点击搜索结果中的Dapper , 勾选项目 , 选择安装 ; 在 解决方案管理器中点击项目 , 查看引用 ,如果有

ASP.NET Core 应用程序Startup类介绍

こ雲淡風輕ζ 提交于 2020-07-24 06:17:49
Startup 类配置服务和应用程序的请求管道。 Startup 类 ASP.NET Core应用程序需要一个启动类,按照惯例命名为 Startup 。在主程序的Web Host生成器(WebHostBuilderExtensions)的 UseStartup <TStartup> 扩展方法中指定启动类名称。 您可以为不同的环境定义不同的 Startup 类,并在运行时选择适当的 Startup 类。如果在Web Host配置或选项中指定 startupAssembly (启动程序集),托管将加载该启动程序集并搜索 Startup 或 Startup[Environment] 类型。根据名称后缀匹配当前环境的类将被优先使用,所以如果应用程序在开发环境中运行,并包含一个 Startup 和一个 StartupDevelopment 类,他将使用 StartupDevelopment 类。 通俗的讲,ASP.NET Core应用程序启动的时候将会根据当前的运行环境(生产环境(Production)或者开发环境(Development))自动选择启动类。比如在一个ASP.NET Core应用程序中,具有两个启动类 Startup 和 StartupDevelopment ,那么当我们的启动环境设置为开发环境的时候,启动时将会搜索启动程序集,优先使用 StartupDevelopment

MySql 8+版本 load data出错的问题

北战南征 提交于 2020-05-08 03:37:03
MySql数据库升级到8以上时,对于开发人员来说非常好用的数据批量导入的工具loaddata使用会出现一些小问题。 这里简单总结一下,如果可以 帮大家省时间最好不过 了 简单粗暴,围绕出啥错,为什么,怎么解决三点开始正文 错误:ERROR 1148: The used command is not allowed with this MySQL version 为啥:load data local可被利用为高危漏洞,所以8以上mysql默认关闭改功能 咋办:修改全局变量启用load data set global local_infile = 1 ; 修改config启用load data local [ client ] loose - local - infile = 1 错误:MySqlBulkLoader 报 promissions deny 为啥:5.6之前,这代码没问题,5.6之后的版本,默认local = false 咋办:代码加一段就可以了 var bulk = new MySqlBulkLoader(conn) { CharacterSet = " utf8mb4 " , Local = true , #加这个,参考官方文档,文末有链接 FieldTerminator = " , " , FieldQuotationCharacter = ' " ' ,

C# 基础知识系列- 14 IO篇 流的使用

自闭症网瘾萝莉.ら 提交于 2020-05-05 11:25:45
0. 前言 继续之前的C# IO流,在前几篇小短片中我们大概看了下C# 的基础IO也对文件、目录和路径的操作有了一定的了解。这一篇开始,给大家演示一下流的各种操作。以文件流为例,一起来看看如何操作吧。 注:之前更新了一篇《Spring Cloud 实战日记》,这是一个新的系列,有兴趣的小伙伴可以从我的账号首页进去看看。 1. 简单的IO流读写文件 先来看一部分代码: class Program { static void Main(string[] args) { var directory = Directory.GetCurrentDirectory(); var program = File.Open("../../../Program.cs", FileMode.OpenOrCreate); // program = File.Open("Program.cs", FileMode.OpenOrCreate); var buffers = new byte[1024];// 创建一个8k的缓存区 var list = new List<byte>(); while(true) { int length = program.Read(buffers, 0, buffers.Length); if(length <=0) { break; } list.AddRange

C# 基础知识系列- 14 IO篇 流的使用

点点圈 提交于 2020-05-05 11:20:40
0. 前言 继续之前的C# IO流,在前几篇小短片中我们大概看了下C# 的基础IO也对文件、目录和路径的操作有了一定的了解。这一篇开始,给大家演示一下流的各种操作。以文件流为例,一起来看看如何操作吧。 注:之前更新了一篇《Spring Cloud 实战日记》,这是一个新的系列,有兴趣的小伙伴可以从我的账号首页进去看看。 1. 简单的IO流读写文件 先来看一部分代码: class Program { static void Main(string[] args) { var directory = Directory.GetCurrentDirectory(); var program = File.Open("../../../Program.cs", FileMode.OpenOrCreate); // program = File.Open("Program.cs", FileMode.OpenOrCreate); var buffers = new byte[1024];// 创建一个8k的缓存区 var list = new List<byte>(); while(true) { int length = program.Read(buffers, 0, buffers.Length); if(length <=0) { break; } list.AddRange

打造更好用的 EF 自动审计

僤鯓⒐⒋嵵緔 提交于 2020-05-03 19:13:14
打造更好用的 EF 自动审计 Intro 上次基于 EF Core 实现了一个自动审计的功能,详细可以参考 https://www.cnblogs.com/weihanli/p/auto-audit-for-entity-framework.html ,虽然说多数情况下可以适用,但是因为要显式继承于一个 AuditDbContextBase 或 AuditDbContext ,所以对代码的侵入性比较强,对于已经无法修改的代码或者已经继承于某一个类了,就无法再继承 AuditDBContext 了,就没有办法实现自动审计了,在 WeihanLi.EntityFramework 1.7.0 新版本里引入了 AOP 的设计,结合 AOP 来实现就简单很多了,不再需要对原有的 DbContext 有任何修改就可以轻松实现自动审计了,下面来看如何做 实例演示 服务注册 使用 AddProxyDbContext 代替 AddDbContext , AddProxyDbContextPool 代替 AddDbContextPool ,会自动注册代理服务,以实现 AOP 拦截 var services = new ServiceCollection(); // 使用内置的扩展注册 DbContext 代理服务 //services.AddProxyDbContext<TestDbContext>

打造更好用的 EF 自动审计

被刻印的时光 ゝ 提交于 2020-05-03 16:35:03
打造更好用的 EF 自动审计 Intro 上次基于 EF Core 实现了一个自动审计的功能,详细可以参考 https://www.cnblogs.com/weihanli/p/auto-audit-for-entity-framework.html ,虽然说多数情况下可以适用,但是因为要显式继承于一个 AuditDbContextBase 或 AuditDbContext ,所以对代码的侵入性比较强,对于已经无法修改的代码或者已经继承于某一个类了,就无法再继承 AuditDBContext 了,就没有办法实现自动审计了,在 WeihanLi.EntityFramework 1.7.0 新版本里引入了 AOP 的设计,结合 AOP 来实现就简单很多了,不再需要对原有的 DbContext 有任何修改就可以轻松实现自动审计了,下面来看如何做 实例演示 服务注册 使用 AddProxyDbContext 代替 AddDbContext , AddProxyDbContextPool 代替 AddDbContextPool ,会自动注册代理服务,以实现 AOP 拦截 var services = new ServiceCollection(); // 使用内置的扩展注册 DbContext 代理服务 //services.AddProxyDbContext<TestDbContext>

EF6学习笔记四:一对多、多对多、一对一关系配置(Fluent API)

你说的曾经没有我的故事 提交于 2020-05-03 15:13:57
要专业系统地学习EF前往《你必须掌握的Entity Framework 6.x与Core 2.0》这本书的作者(汪鹏,Jeffcky)的博客:https://www.cnblogs.com/CreateMyself/ 现在就来到了重中之重的配置了:一对多、多对多、一对一关系的配置,我这里全部使用Fulent API 的方式来 一对多 一对多最简单了,写好你的数据模型,什么配置都不用做,生成的表结构就是你想要的 来个简单基类 public class BaseEntity { public BaseEntity() { this .Id = Guid.NewGuid().ToString(); this .AddTime = DateTime.Now; } public string Id { get ; set ; } public DateTime AddTime { get ; set ; } } View Code 来个简单图书馆类 public class Library:BaseEntity { public string Name { get ; set ; } public virtual ICollection<Book> Books { get ; set ; } } View Code 来个简单Book类 public class Book:BaseEntity

[Abp vNext 源码分析]

谁说我不能喝 提交于 2020-05-02 14:09:54
一、简要介绍 在以前的文章里面,我们介绍了 ABP vNext 在 DDD 模块定义了仓储的接口定义和基本实现。本章将会介绍,ABP vNext 是如何将 EntityFramework Core 框架跟仓储进行深度集成。 ABP vNext 在集成 EF Core 的时候,不只是简单地实现了仓储模式,除开仓储以外,还提供了一系列的基础设施,如领域事件的发布,数据过滤器的实现。 二、源码分析 EntityFrameworkCore 相关的模块基本就下面几个,除了第一个是核心 EntityFrameworkCore 模块以外,其他几个都是封装的 EntityFrameworkCore Provider,方便各种数据库进行集成。 2.1 EF Core 模块集成与初始化 首先从 Volo.Abp.EntityFrameworkCore 的 AbpEntityFrameworkCoreModule 开始分析,该模块只重写了 ConfigureServices() 方法,在内部也只有两句代码。 public override void ConfigureServices(ServiceConfigurationContext context) { // 调用 AbpDbContextOptions 的预配置方法,为了解决下面的问题。 // https://stackoverflow.com