當我寫DbContext擴展方法時,它不起作用。我無法從DbContext物件中訪問該方法。這到底是什么問題?
namespace Data
{
public static class DbContextExtensions
{
public static bool AreThereAdministration? title">AreThereAnyChanges(thisDbContext context)
=> context.ChangeTracker
.Entries()
.Any(x => x.State == EntityState.Modified ||
x.State == EntityState.Added ||
x.State == EntityState.Deleted)。)
}
}
使用資料。
namespace Demo
{
public partial class KybInfrastructureDemoDbContext : DbContext, IDatabaseContextpublic KybInfrastructureDemoDbContext() { } KybInfrastructureDemoDbContext()
public KybInfrastructureDemoDbContext(DbContextOptions< KybInfrastructureDemoDbContext> options)
: base(options) {
//'DbContext'不包含'AreThereAnyChanges'的定義。
bool change = base.AreThereAnyChanges()。
}
}
uj5u.com熱心網友回復:
base不是一個物件參考。它是一個強制編譯器系結到基類成員的關鍵字,而不是當前類上的覆寫。 由于基類上沒有定義AreThereAnyChanges,編譯器會拋出一個錯誤。
使用this代替。由于this是一個DbContext,編譯器應該找到適當的擴展方法:
bool change = this.AreThereAnyChanges()。
注意,如果也有一個AreThereAnyChanges擴展方法專門針對KybInfrastructureDemoDbContext,那么你仍然可以通過鑄造this系結到DbContext擴展:
bool change = ((DbContext)this).AreThereAnyChanges();
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/331783.html
標籤:
