代码之家  ›  专栏  ›  技术社区  ›  Jean Tosta

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

  •  0
  • Jean Tosta  · 技术社区  · 1 年前

    错误消息:

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

    如果你看看项目结构:

    项目“API_Test_Console” 应该只负责创建新的实例操作系统对象并运行此解决方案

    项目“API_Test_Library” 包含将用于此解决方案的所有类。还有负责与SQL连接的类。

    API_测试_库->系统连接。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_测试_控制台->Console_Context。反恐精英 。就像这样:

    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

    为enrity SOLUTION只设置一个DBContext。

    1 回复  |  直到 1 年前
        1
  •  1
  •   Orion    1 年前

    将迁移添加到包含以下内容的项目中 DbContext 类,您需要从包管理器控制台的下拉列表中选择项目。选择Api_Test_Library。

    enter image description here

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

    推荐文章