添加迁移问题(Entity Framework Core)

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

尝试为代码优先数据库运行

add-migration
,但我收到此错误:

无法创建“StoreContext”类型的对象。

这是带有

-verbose
的错误消息:

System.InvalidOperationException:尝试激活“КПО_лаб_2._3.StoreContext”时无法解析类型“Microsoft.EntityFrameworkCore.DbContextOptions`1[КПО_лаб_2._3.StoreContext]”的服务。

在 Microsoft.Extensions.DependencyInjection.ActivatorUtilities.ConstructorMatcher.CreateInstance(IServiceProvider 提供程序)
在 Microsoft.Extensions.DependencyInjection.ActivatorUtilities.CreateInstance(IServiceProvider 提供程序,类型 instanceType,Object[] 参数)
在 Microsoft.Extensions.DependencyInjection.ActivatorUtilities.GetServiceOrCreateInstance(IServiceProvider 提供程序,类型类型)
在 Microsoft.EntityFrameworkCore.Design.Internal.DbContextOperations.<>c__DisplayClass21_4.b__13()
内部异常堆栈跟踪结束 ---

这是我的上下文代码:

using Microsoft.EntityFrameworkCore;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace КПО_лаб_2._3
{
    public class StoreContext : DbContext
    {
        public DbSet<Client> Clients { get; set; }
        public DbSet<Order> Orders { get; set; }
        public DbSet<Product> Products { get; set; }
        public DbSet<OrderDetail> OrderDetails { get; set; }

        public StoreContext(DbContextOptions<StoreContext> options) : base(options)
        {
        }

        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        {
            optionsBuilder.UseSqlServer("Server=localhost;Database=Store;Integrated Security=True;TrustServerCertificate=Yes;Trusted_Connection=True");
        }

        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            // Настройка связей между сущностями

            // Связь "Клиент" (Client) - "Заказ" (Order) (1-*)
            modelBuilder.Entity<Order>()
                .HasOne(o => o.Client)
                .WithMany(c => c.Orders)
                .HasForeignKey(o => o.ClientId);

            // Связь "Заказ" (Order) - "Детали заказа" (OrderDetail) (1-*)
            modelBuilder.Entity<OrderDetail>()
                .HasOne(od => od.Order)
                .WithMany(o => o.OrderDetails)
                .HasForeignKey(od => od.OrderId);

            // Связь "Товар" (Product) - "Детали заказа" (OrderDetail) (1-*)
            modelBuilder.Entity<OrderDetail>()
                .HasOne(od => od.Product)
                .WithMany(p => p.OrderDetails)
                .HasForeignKey(od => od.ProductId);
        }
    }
}
c# entity-framework-core dbcontext
2个回答
0
投票

您的 DbContext 有单独的项目吗?尝试指定

--project
(哪个项目包含 DbContext)和
--startup-project
(哪个项目包含连接信息)选项,如下所示:

dotnet ef migrations add MyMigration --project Foo --startup-project Bar


0
投票

通过添加空构造函数解决了问题,如下所示:

public partial class TPPSSDbContext : DbContext
{
    public TPPSSDbContext() { } //this one
    public TPPSSDbContext(DbContextOptions<TPPSSDbContext> options) 
        : base(options) 
    { 
    }
}

我还添加了 -project 到 add-migration ,所以它看起来像这样: 添加迁移 abc -项目 КПО_лаб_2.3

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