本EF扩展插件将持续更新:开源,敏捷,高性能。(因为EF Core暂未提供方便的钩子位置,暂无EF Core版本)git
EntityFramework.Extension代码 (GitHub欢迎Fork)github
EntityFramework.Extension代码 (Nuget:Install-Package EntityFramework.Extension)数据库
读写分离,支持可配置项的方式。同时支持权重的方式轮询。c#
<entityFrameworkConfig isSlaveRead="true" readConnstr="Data Source=(localdb)\test;Initial Catalog=Demo;Integrated Security=True;"> <slaves> <add name="test1" connectionString="Data Source=(localdb)\test;Initial Catalog=Demo;Integrated Security=True;" weight="1"/> <add name="test2" connectionString="Data Source=(localdb)\test;Initial Catalog=Demo;Integrated Security=True;" weight="10"/> </slaves> </entityFrameworkConfig>
isSlaveRead
// 是否开启读写分离readConnstr
// 读库连接字符串slaves节点
// 当读库有多个时,经过weight
支持权重轮询读库功能。(readConnstr配置不为空时,将忽略slaves节点)目前封装了3种形式的,指定字段更新方法。并发
var user = new User { Id = 2, Name = Guid.NewGuid().ToString() }; DemoDbContext.CurrentDb.UpdateField(user, "Name");
var user = new User { Id = 2, Name = Guid.NewGuid().ToString() }; DemoDbContext.CurrentDb.UpdateField(user, x => x.Id == 2, "Name");
var user = new User { Id = 2, Name = Guid.NewGuid().ToString() }; DemoDbContext.CurrentDb.UpdateEntityField(user, "Name");
事务类型
在.NET 中,事务分SQLTransaction和TransactionScope。后者在MSDTC(Distributed Transaction Coordinator)开启的时候,支持分布式事务。框架
隔离等级IsolationLevel分布式
事务特性(ACID)性能
说了那么多,本插件对事务的支持:ui
DemoDbContext.CurrentDb.TransExecute(x => { x.Users.Add(new User()); return x.SaveChanges(); });
针对事务,同时支持锁的读取功能插件
var userList = DemoDbContext.CurrentDb.NoLockFunc(db => db.Users.ToList());
相似ABP框架,提供了IEntity,ICreatorEntity,IModifyEntity,IAuditionEntity,IDeletionEntity等等