Entity Framework Plus
Entity Framework Plus 是一個用於增強 EF6 和 EF Core 的免費開源庫。它對您的資料庫上下文 DbContext 進行了擴充套件,包括過濾器、稽核、緩存、批次刪除、批次更新等。
功能特性
批次刪除
使用 LINQ 直接刪除實體,並需在上下文中載入實體。支持設定批次處理大小來提高效能。
// 刪除所有 2 年內不活動的使用者
var date = DateTime.Now.AddYears(-2);
ctx.Users.Where(x => x.LastLoginDate < date)
.Delete();
// 使用 BatchSize 進行刪除
var date = DateTime.Now.AddYears(-2);
ctx.Users.Where(x => x.LastLoginDate < date)
.Delete(x => x.BatchSize = 1000);
批次更新
// 更新所有兩年內不活動的使用者
var date = DateTime.Now.AddYears(-2);
ctx.Users.Where(x => x.LastLoginDate < date)
.Update(x => new User() { IsSoftDeleted = 1 });
查詢過濾
下面的範例中,過濾了軟刪除記錄
QueryFilterManager.Filter<Post>
(q => q.Where(x => !x.IsSoftDeleted));
var ctx = new EntitiesContext();
// SELECT * FROM Post WHERE IsSoftDeleted = false
var list = ctx.Posts.ToList();
查詢緩存
查詢的結果從緩存中返回,如果查詢時沒有緩存,會查詢資料庫並進行緩存。
可以指定緩存策略和緩存標簽來控制緩存過期。
// (EF5 | EF6) 2 個小時的查詢緩存
var states = ctx.States.Where(x => x.IsActive).FromCache(DateTime.Now.AddHours(2));
// 兩個小時的滑動過期
var options = new MemoryCacheEntryOptions() { SlidingExpiration = TimeSpan.FromHours(2)};
var states = ctx.States.Where(x => x.IsActive).FromCache(options);
計畫地址
https://github.com/zzzprojects/EntityFramework-Plus
分享
點收藏
點點贊
點在看