[英]How to get DbContext class in EF Core without bringing in EF 6?
[英]How to get to entities using base DbContext class in EF Core?
我的項目包含兩個不同的數據庫,我需要在開始時搭建腳手架(數據庫優先方法)。 我想遵循存儲庫模式,但我的存儲庫需要使用不同的DbContext
。 我想創建一個具有“多態” DbContext
屬性的BaseRepository
class,如下所示:
internal abstract class BaseRepository
{
public BaseRepository(DbContext dbContext)
{
DbContext = dbContext;
}
protected DbContext DbContext { get; private set; }
public async Task<int> SaveChangesAsync() =>
await DbContext.SaveChangesAsync();
}
示例子 class:
internal class GameRepository : BaseRepository, IGameRepository
{
public GameRepository(SomeDbContext dbContext)
{
_dbContext = dbContext;
}
public async Task<GameEntity> GetGamesAsync() =>
await DbContext... ???????
}
問題是派生 class 中的數據庫上下文具有DbContext
類型,因此我無法訪問我的實體。 有什么方法可以訪問存儲在派生的SomeDbContext
class 中的實體,但使用基礎 class? 如果不是,那么解決此類問題的最佳方法是什么?
有什么方法可以訪問存儲在派生的
SomeDbContext
class 中的實體,但使用基礎 class?
是的。 您可以使用基本 class DbContext
的Set<T>
通用方法,如下所示:
public async Task<GameEntity> GetGamesAsync() =>
await DbContext.Set<GameEntity>().ToListAsync();
由於您知道DbContext
的類型(它只能是給定類中的SomeDbContext
),您可以安全地轉換它:
public async Task<GameEntity> GetGamesAsync() =>
await ((SomeDbContext)DbContext).Games...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.