本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等等