EFcore好用組件 Entity Framework Plus docs 教程 使用文檔


內容來自  https://github.com/zzzprojects/EntityFramework-Plus

瀏覽器直譯!  僅為了方便如我一樣英文菜鳥參考用   英文好的直接看官方文檔和github上的描述即可
其實常用的功能就是批量更新和批量刪除
其他的暫時沒研究
審計功能好像挺6的 還沒仔細研究

特征


批量操作僅適用於實體框架擴展

  • 散裝保存變化
  • 散裝因特
  • 散裝Update
  • 布爾凱德萊特
  • 散裝

批處理刪除(常用)

刪除單個數據庫往返中的多行,而不在上下文中加載實體。

// using Z.EntityFramework.Plus; // Don't forget to include this.

// DELETE all users which has been inactive for 2 years
ctx.Users.Where(x => x.LastLoginDate < DateTime.Now.AddYears(-2))
         .Delete();

// DELETE using a BatchSize
ctx.Users.Where(x => x.LastLoginDate < DateTime.Now.AddYears(-2))
         .Delete(x => x.BatchSize = 1000);

 

支持:EF5、 EF6 、 EF 核心

了解更多信息

批處理更新(常用)

使用單個數據庫往返中的表達式更新多行,而不在上下文中加載實體。

// using Z.EntityFramework.Plus; // Don't forget to include this.

// UPDATE all users which has been inactive for 2 years
ctx.Users.Where(x => x.LastLoginDate < DateTime.Now.AddYears(-2))
         .Update(x => new User() { IsSoftDeleted = 1 });

 

支持:EF5、 EF6 、 EF 核心

了解更多信息

查詢緩存

查詢緩存是實體框架的第二級緩存。

查詢的結果從緩存返回。如果查詢尚未緩存,則在返回之前將實現和緩存查詢。

您可以指定緩存策略和緩存標記來控制緩存項過期。

支持:

緩存策略

// The query is cached using default QueryCacheManager options
var countries = ctx.Countries.Where(x => x.IsActive).FromCache();

// (EF5 | EF6) The query is cached for 2 hours
var states = ctx.States.Where(x => x.IsActive).FromCache(DateTime.Now.AddHours(2));

// (EF7) The query is cached for 2 hours without any activity
var options = new MemoryCacheEntryOptions() { SlidingExpiration = TimeSpan.FromHours(2)};
var states = ctx.States.Where(x => x.IsActive).FromCache(options);

 

緩存標簽

var states = db.States.Where(x => x.IsActive).FromCache("countries", "states");
var stateCount = db.States.Where(x => x.IsActive).DeferredCount().FromCache("countries", "states");

// Expire all cache entry using the "countries" tag
QueryCacheManager.ExpireTag("countries");

 

支持:EF5、 EF6 、 EF 核心

了解更多信息

查詢延遲

推遲執行通常執行的查詢,以允許某些功能,如查詢緩存和查詢未來。

// Oops! The query is already executed, we cannot use Query Cache or Query Future features
var count = ctx.Customers.Count();

// Query Cache
ctx.Customers.DeferredCount().FromCache();

// Query Future
ctx.Customers.DeferredCount().FutureValue();

 

所有 LINQ 擴展都受支持:計數、第一、第一默認、總和等。

支持:EF5、 EF6 、 EF 核心

了解更多信息

查詢過濾器

在全局、實例或查詢級別使用謂詞篩選查詢。

支持:

全局過濾器

// CREATE global filter
QueryFilterManager.Filter<Customer>(x => x.Where(c => c.IsActive));

var ctx = new EntityContext();

// TIP: Add this line in EntitiesContext constructor instead
QueryFilterManager.InitilizeGlobalFilter(ctx);

// SELECT * FROM Customer WHERE IsActive = true
var customer = ctx.Customers.ToList();

 

實例篩選器

var ctx = new EntityContext();

// CREATE filter
ctx.Filter<Customer>(x => x.Where(c => c.IsActive));

// SELECT * FROM Customer WHERE IsActive = true
var customer = ctx.Customers.ToList();

  

查詢過濾器

1 var ctx = new EntityContext();
2 
3 // CREATE filter disabled
4 ctx.Filter<Customer>(CustomEnum.EnumValue, x => x.Where(c => c.IsActive), false);
5 
6 // SELECT * FROM Customer WHERE IsActive = true
7 var customer = ctx.Customers.Filter(CustomEnum.EnumValue).ToList();

 

支持:EF5、 EF6 、 EF 核心

了解更多信息

查詢未來

查詢未來允許通過在同一 sql 命令中批處理多個查詢來減少數據庫往返。

所有將來的查詢都存儲在掛起的列表中。當第一個將來查詢需要數據庫往返時,所有查詢都在同一 sql 命令中解析,而不是為每個 sql 命令進行數據庫往返。

支持:

未來

// GET the states & countries list
var futureCountries = db.Countries.Where(x => x.IsActive).Future();
var futureStates = db.States.Where(x => x.IsActive).Future();

// TRIGGER all pending queries (futureCountries & futureStates)
var countries = futureCountries.ToList();

 

未來價值

// GET the first active customer and the number of avtive customers
var futureFirstCustomer = db.Customers.Where(x => x.IsActive).DeferredFirstOrDefault().FutureValue();
var futureCustomerCount = db.Customers.Where(x => x.IsActive).DeferredCount().FutureValue();

// TRIGGER all pending queries (futureFirstCustomer & futureCustomerCount)
Customer firstCustomer = futureFirstCustomer.Value;

 

支持:EF5、 EF6 、 EF 核心

了解更多信息

查詢包括篩選器

實體框架已經支持渴望加載,但主要缺點是您無法控制將包含哪些。無法僅加載活動項或僅加載前 10 個注釋。

EF+ 查詢包括使簡單:

var ctx = new EntityContext();

// Load only active comments
var posts = ctx.Post.IncludeFilter(x => x.Comments.Where(x => x.IsActive));

 

支持:EF6

了解更多信息

查詢包括優化

通過同時包括和篩選子集合改進 SQL 生成!

var ctx = new EntityContext();

// Load only active comments using an optimized include
var posts = ctx.Post.IncludeOptimized(x => x.Comments.Where(x => x.IsActive));

 

支持:EF5, EF6

了解更多信息

審計

允許輕松跟蹤更改、排除/包括實體或屬性以及自動保存數據庫中的審核條目。

支持:

  • 自動保存審核
  • 排除和包括實體
  • 排除和包括屬性
  • 格式值
  • 忽略事件
  • 屬性不變
  • 軟添加和軟刪除
// using Z.EntityFramework.Plus; // Don't forget to include this.

var ctx = new EntityContext();
// ... ctx changes ...

var audit = new Audit();
audit.CreatedBy = "ZZZ Projects"; // Optional
ctx.SaveChanges(audit);

// Access to all auditing information
var entries = audit.Entries;
foreach(var entry in entries)
{
    foreach(var property in entry.Properties)
    {
    }
}

自動保存數據庫中的審核

AuditManager.DefaultConfiguration.AutoSavePreAction = (context, audit) =>
    (context as EntityContext).AuditEntries.AddRange(audit.Entries);

支持:EF5、 EF6 、 EF 核心


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM