错误信息:
在程序集“API_Test_Console”中找不到 DbContext。确保您使用正确的程序集并且类型既不是抽象的也不是泛型的。
如果你看一下项目结构:
项目“API_Test_Console” 应该只负责创建新实例操作系统对象并运行此解决方案
项目“API_Test_Library” 包含将用于此解决方案的所有类。还有负责与 SQL 连接的类。
API_Test_Library -> SYSTEM_CONECTION.CS(当前设置 DBContext 的位置)
using API_Test_Library.Models;
using Microsoft.EntityFrameworkCore;
namespace API_Test_Library.DB;
public class SYSTEM_CONTEXT : DbContext
{
public DbSet<Value> Values { get; set; }
public DbSet<Category> Categories { get; set; }
private string ConnectionString = "Data Source=(localdb)\\MSSQLLocalDB;Initial Catalog=API_Test_V0;Integrated Security=True;Connect Timeout=30;Encrypt=False;Trust Server Certificate=False;Application Intent=ReadWrite;Multi Subnet Failover=False";
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlServer(ConnectionString);
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Value>()
.HasKey(a => a.Id);
modelBuilder.Entity<Value>()
.HasOne(a => a.Category);
modelBuilder.Entity<Category>()
.HasKey(a => a.Id);
modelBuilder.Entity<Category>()
.HasMany(a => a.Values);
base.OnModelCreating(modelBuilder);
}
}
修复我目前所知的问题
在 API_Test_Console -> Console_Context.CS 创建另一个类。像这样:
代码
using API_Test_Library.Models;
using Microsoft.EntityFrameworkCore;
namespace API_Test_Console;
public class Console_CONTEXT : DbContext
{
public DbSet<Value> Values { get; set; }
private string ConnectionString = "Data Source=(localdb)\\MSSQLLocalDB;Initial Catalog=API_Test_V0;Integrated Security=True;Connect Timeout=30;Encrypt=False;Trust Server Certificate=False;Application Intent=ReadWrite;Multi Subnet Failover=False";
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlServer(ConnectionString);
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Value>()
.HasKey(a => a.Id);
base.OnModelCreating(modelBuilder);
}
}
问题:
还有其他方法可以解决吗?或者必须为每个项目设置一个 DBContext?
注意:项目引用设置如下:
为实体解决方案仅设置一个 DBContext。