C# - 具有 2 个项目的解决方案迁移失败(DBContext setr 仅在一个项目中)

问题描述 投票:0回答:1

错误信息:

在程序集“API_Test_Console”中找不到 DbContext。确保您使用正确的程序集并且类型既不是抽象的也不是泛型的。 enter image description here

如果你看一下项目结构:

项目“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 创建另一个类。像这样:

enter image description here

代码

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?

注意:项目引用设置如下:

enter image description here

为实体解决方案仅设置一个 DBContext。

c# entity-framework migration dbcontext
1个回答
0
投票

要将迁移添加到包含

DbContext
类的项目,您需要从包管理器控制台的下拉列表中选择该项目。选择 Api_Test_Library。

enter image description here

顺便问一下,这个奇怪的命名是怎么回事?

SYSTEM_CONTEXT
SYSTEM_CONECTION

© www.soinside.com 2019 - 2024. All rights reserved.