c# - 类库中的 asp.net core ef dbcontext
问题描述
在我的项目中,我使用了 2 个 dbcontexts,一个是默认的 microsoft auth,另一个是我自己的数据库上下文。我现在有我的 asp 项目一个逻辑类库和一个数据类库,其中包含我自己的 DBContext 和数据集。
我现在的问题是如何在不需要将上下文从 asp 核心项目传递到数据类库的情况下进行数据库查询。
所以我可以在逻辑类中调用数据库而不需要与asp项目的连接。有点像 N 层架构。
谢谢
进一步解释我有我的 GameContext 数据类库
public class GameContext : DbContext
{
public GameContext(DbContextOptions options) : base(options) { }
public DbSet<Enemy> Enemies { get; set; }
public DbSet<News> theNews { get; set; }
public DbSet<Character> Characters { get; set; }
public DbSet<Class> Classes { get; set; }
public DbSet<Inventory> Inventories { get; set; }
public DbSet<Item> Items { get; set; }
public DbSet<Models.Type> Types { get; set; }
public DbSet<Inventory_has_Item> Inventory_has_Item { get; set; }
public DbSet<Enemy_has_Item> Enemy_has_Item { get; set; }
public DbSet<Equipment> Equipment { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Inventory_has_Item>()
.HasKey(t => new { t.InventoryId, t.ItemId });
modelBuilder.Entity<Enemy_has_Item>()
.HasKey(t => new { t.EnemyId, t.ItemId });
}
}
从我的逻辑类库中,我想做这样的事情
public async Task<List<GameData.Models.Enemy>> getAllEnemies()
{
GameData.Models.test test = new test(_context);
List<GameData.Models.Enemy> enemies;
enemies = await _context.Enemies.ToListAsync();
return enemies;
}
问题是我现在需要从控制器中的 asp mvc 传递 _context 来调用逻辑库中的方法,如下所示
public EnemiesController(GameContext context)
{
_context = context;
_enemies = new Enemies(_context);
}
这在做诸如索引之类的事情时有效,但是当我进行创建时,我在上下文中遇到依赖注入错误
解决方案
推荐阅读
- laravel - 带有时间倒计时的 Laravel 拍卖应用程序
- javascript - Web Scraping 提取 Javascript 表 Selenium+Python
- c# - 条件表达式的类型不能像在 c# 中那样确定
- mysql - 获取/限制 MySQL 中每个唯一值的 N 个结果
- python - 对某些标准使用简单的计数方法
- javascript - v-model 在 laravel vuejs 中不起作用
- vue.js - Vue一个接一个的触发请求
- java - 如何在for循环中执行准备好的语句以从jsp中的表中获取数据?
- python - 如何使用 DataFrame.T 设置列名
- javascript - react-quill 自定义保存按钮到 firebase