FreeSql

作者做了很完善的组件

我看了一下,感觉很实用,使用上有很大的可自定义操作的地方,跟传统Orm固定格式不同,也异于Dapper的设计,支持表达式树

原地址

https://www.cnblogs.com/kellynic/p/10310484.html

关于魔改的内容

个人感觉很喜欢~就魔改了一下,增加了一个上下文

顾名思义,界定数据源的,这个设计其实是仿EF的,因为很多高仿Dapper的组件都是依赖于连接对象,做的一组扩展方法

在中大型系统里面,可能有一组产品,每个有独立的数据库,彼此之间又有关联性,上下文是一组独立的数据源

我们只关注上下文去操作数据即可

    public class UserModel
{
public string Account { get; set; }
public string Nickname { get; set; }
public string Email { get; set; }
} public class LogModel
{
public UserModel User { get; set; }
public DateTimeOffset Time { get; set; }
} public class UserContext : FreeSqlDbContext
{
public FreeSqlDbSet<UserModel> Users { get; set; }
public FreeSqlDbSet<LogModel> Logs { get; set; } public UserContext(FreeSqlBuilder build) : base(build)
{
}
}

这个UserContext就是一个上下文

            var connstr = "Data Source=D:\\db\\_Cache.db;Pooling=true;FailIfMissing=false";
var factory = new FreeSqlDbContextFactory(); var context = factory.GetOrAdd<UserContext>(
new FreeSqlBuilderConfiguration()
.UseConnectionString(FreeSql.DataType.Sqlite, connstr)
//.UseSlave("connectionString1", "connectionString2") //使用从数据库,支持多个 .UseMonitorCommand(
cmd => Console.WriteLine(cmd.CommandText), //监听SQL命令对象,在执行前
(cmd, traceLog) => Console.WriteLine(traceLog)) //监听SQL命令对象,在执行后 .UseLogger(null) //使用日志,不指定默认输出控制台 ILogger
.UseCache(null) //使用缓存,不指定默认使用内存 IDistributedCache .UseAutoSyncStructure(true) //自动同步实体结构到数据库
.UseSyncStructureToLower(true) //转小写同步结构 .UseLazyLoading(true) //延时加载导航属性对象,导航属性需要声明 virtual
);

这个context内的Users和Logs是操作UserModel和LogModel的入口

比如以前的IFreeSql.Insert<UserModel>(UserModel model)

则改为

context.Users.Insert

项目地址

我的魔改地址

FreeSql魔改

作者给我的分支地址

FreeSqlContext

FreeSql增加新特性Context的更多相关文章

  1. JAVA 8 主要新特性 ----------------(二)JDK1.8优点概括

    一.JDK1.8优点概括 1.速度更快 由于底层结构和JVM的改变,使得JDK1.8的速度提高. 2.代码更少(增加了新的语法 Lambda 表达式)          增加新特性Lambda表达式的 ...

  2. Atitit nodejs5 nodejs6  nodejs 7.2.1  新特性attialx总结

    Atitit nodejs5 nodejs6  nodejs 7.2.1  新特性attialx总结 1.1. Node.js 4.0.0 已经发布了 .这是和 io.js 合并之后的首个稳定版本,它 ...

  3. JDK 1.7版本的 新特性

    摘自: http://yanguz123.iteye.com/blog/1934766 Jdk1.7的新特性: 1,switch中可以使用字串 Java代码: String s = "tes ...

  4. 一文带你看遍 JDK9~14 的重要新特性!

    Java9 发布于 2017 年 9 月 21 日 .作为 Java8 之后 3 年半才发布的新版本,Java 9 带 来了很多重大的变化其中最重要的改动是 Java 平台模块系统的引入,其他还有诸如 ...

  5. Android 10 终于来了!增加了不少新特性

    前言 Android 10 正式发布了,根据官网的介绍,聚焦于隐私可控.手机自定义与使用效率,此版本主要带来了十大新特性:   image 智能回复 使用机器学习来预测你在回复信息时可能会说些什么,这 ...

  6. kubernetes1.4新特性:增加新的节点健康状况类型DiskPressure

    背景资料 在Kubernetes架构图中可以看到,节点(Node)是一个由管理节点委托运行任务的worker. 它能运行一个或多个Pods,节点(Node)提供了运行容器环境所需要的所有必要条件,在K ...

  7. 10个html5增加的重要新特性和内容

    文章开篇之前我们先了解一下什么是html5,百度上是这样定义html5的:万维网的核心语言.标准通用标记语言下的一个应用超文本标记语言(HTML)的第五次重大修改. 其实说白了html5也就是人为定义 ...

  8. JVM的运行原理以及JDK 7增加的新特性(二)

    JVM结构 Java编写的代码会按照下图的流程来执行 类装载器装载负责装载编译后的字节码,并加载到运行时数据区(Runtime Data Area),然后执行引擎执行会执行这些字节码. 类加载器(Cl ...

  9. Atitit. Atiposter 发帖机 新特性 poster new feature   v7 q39

    Atitit. Atiposter 发帖机 新特性 poster new feature   v7 q39 V8   重构iocutilV4,use def iocFact...jettyUtil V ...

随机推荐

  1. Zookeeper是什么&怎么用

    1.Zookeeper概述 Zookeeper 是一个开源的分布式协调服务框架 ,主要用来解决分布式集群中应用系统的一致性问题和数据管理问题 2:Zookeeper的特点 Zookeeper 本质上是 ...

  2. Python并发编程01 /操作系统发展史、多进程理论

    Python并发编程01 /操作系统发展史.多进程理论 目录 Python并发编程01 /操作系统发展史.多进程理论 1. 操作系统 2. 进程理论 1. 操作系统 定义:管理控制协调计算机中硬件与软 ...

  3. linux专题(三):常用的基本命令(一)目录管理

    http://dwz.date/UDf 绝对路径和相对路径 我们知道Linux的目录结构为树状结构,最顶级的目录为根目录 /. 其他目录通过挂载可以将它们添加到树中,通过解除挂载可以移除它们. 在开始 ...

  4. 数据分析,numpy pandas常用api记录

    1. np.percentile(train_list["wnum1"], [10, 90, 95, 99])  计算一个多维数组的任意百分比分位数,此处的百分位是从小到大排列 2 ...

  5. vue 实现滑块验证码

    图一为拖拽前效果,图二为拖拽后效果 一.新建文件JcRange.vue,代码如下: 1.模板代码: <template> <div class="jc-component_ ...

  6. unity-疑难杂症(一)

    1.使用odin插件序列化,当出现预制体有引用类型的关联, 拖到scene就没关联时,可右键预制体--Reimport解决. 2.类似问题1,脚本组件关联AudioMixer,拖到scene没有关联, ...

  7. 老司机带你玩转面试(2):Redis 过期策略以及缓存雪崩、击穿、穿透

    前文回顾 建议前一篇文章没看过的同学先看下前面的文章: 「老司机带你玩转面试(1):缓存中间件 Redis 基础知识以及数据持久化」 过期策略 Redis 的过期策略都有哪些? 在聊这个问题之前,一定 ...

  8. [Qt插件]-02创建应用程序插件(插件化开发的一种思路)

    本篇是学习Qt Creator快速入门,插件开发的笔记   分为两部分 创建插件 使用插件的应用程序(测试插件)   插件是被使用的应用程序加载使用的. 是使用插件的应用程序定义接口,插件按照接口来实 ...

  9. Python Ethical Hacking - Intercepting and Modifying Packets

    INTERCEPTING & MODIFYING PACKETS Scapy can be used to: Create packets. Analyze packets. Send/rec ...

  10. Python Ethical Hacking - VULNERABILITY SCANNER(1)

    HTTP REQUESTS BASIC INFORMATION FLOW The user clicks on a link. HTML website generates a request(cli ...