在我的项目中,我使用2个dbcontexts,一个是默认的microsoft auth,另一个是我自己的数据库上下文。我现在让我的asp项目成为一个逻辑类库和一个包含我自己的DBContext和数据集的数据类库。
我现在的问题是如何进行数据库查询而无需将上下文从asp核心项目传递到数据类库。
所以我可以在逻辑类中调用数据库而无需与asp项目建立连接。有点像N层架构。
谢谢
进一步解释 我有我的GameContext数据类libary
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 });
}
}
从我的逻辑类libary我想做这样的事情
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);
}
这在做索引这样的事情时有效,但是当我做一个创建时,我得到一个与上下文相关的injecten错误