[英]Partial EF Context OnModelCreating Using Scaffold-DbContext
我正在使用數據庫優先開發,並使用Scaffold-DbContext創建我的實體模型項目。 在那個項目中,我有一個局部的dbContext,在其中我重寫了諸如SaveChangesAsync之類的方法來設置某些屬性,例如“ LastModifiedBy”。
我想使用dateDeleted / userDeleted列對記錄進行軟刪除。 當我去重寫OnModelCreating例程時,我看到它已經在自動生成的部分上下文中定義了。
我正在嘗試執行以下操作:
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<SomeEntity>().HasQueryFilter(x => x.DateDeleted == null);
}
有沒有人對我如何以部分類方式做到這一點提出任何建議,仍然允許我使用Scaffold-DbContext動態地重新生成原始上下文?
另請注意,我正在使用.NET Core 2.1.5
David Browne的答案-微軟
在部分上下文中添加靜態屬性
public static bool GlobalFiltersAdded { get; set; } = false;
然后添加例程以添加過濾器:
private void AddGlobalFilters(ModelBuilder modelBuilder){
SomeContext.GlobalFiltersAdded = true;
}
然后在生成的上下文中添加以下內容:
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
AddGlobalFilters(modelBuilder);
//OTHER LOGIC WILL BE HERE
}
選項:
1)重新搭建后刪除生成的OnModelCreating。 這已經是一個手動過程,如果您忘記了,則會生成一個編譯錯誤。
2)使用從生成的DbContext繼承的DbContext。
3)使用第三方工具或庫,例如: EF Core Power Tools
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.