首页 > 解决方案 > 带有 Asp.net 核心 webapi 应用程序的单独类库中的 DBcontext 类

问题描述

解决方案资源管理器图像和 包管理器控制台图像 -

我试图通过给出这样的命令来添加迁移:

Add-Migration addedtable -Context SampleApplicationContext”抛出错误无法创建类型为“SampleApplicationContext”的对象。将“IDesignTimeDbContextFactory”的实现添加到项目中,或参见https://go.microsoft.com/fwlink/?linkid= 851728用于在设计时支持的其他模式

我的启动项目是Sample.Api,默认项目是datarepository\sampleapplicationdatabase

SampleApplicationContext在类库中请帮助某人解决此问题,在此先感谢

my SampleApplicationContext.cs code
-----------------------------------

    
    namespace SampleApplicationDatabase
    {
        public class SampleApplicationContext:DbContext
        {
            public SampleApplicationContext(DbContextOptions<SampleApplicationContext> options) : base(options)
            {
    #if RELEASE
                this.Database.Migrate();
    #endif
            }
    
            public DbSet<AdminCredentials> AdminCredentials { get; set; }
            protected override void OnModelCreating(ModelBuilder modelBuilder)
            {
                foreach (var relationship in modelBuilder.Model.GetEntityTypes().SelectMany(e => e.GetForeignKeys()))
                {
                    relationship.DeleteBehavior = DeleteBehavior.Restrict;
                }
    
                base.OnModelCreating(modelBuilder);
            }
        }
    }
    
   

my sample.api appsetting code
-----------------------------

    
    
    
    {
      "SampleApplicationConnectionstring": {
        "ConnectionString": "Server=TEKFRIDAY281;Database=SampleApplication;User ID=sa;Password=friday123!;Trusted_Connection=True;MultipleActiveResultSets=true;Integrated Security=false"
    
      },
      "Logging": {
        "LogLevel": {
          "Default": "Information",
          "Microsoft": "Warning",
          "Microsoft.Hosting.Lifetime": "Information"
        }
      },
      "AllowedHosts": "*"
    }


my sample.api startup code
--------------------------
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using API_Interface;
using DataAccessLayer;
using IRepository;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.HttpsPolicy;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
using Repository;
using SampleApplicationDatabase;

namespace Sample.API
{
    public class Startup
    {
        public Startup(IConfiguration configuration)
        {
            Configuration = configuration;
        }

        public IConfiguration Configuration { get; }

        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddTransient<IData, Data>();
            services.AddTransient<IUnitOfWork, UnitOfWork>();
            services.AddControllers();
            services.AddMvc();
            services.AddDbContext<SampleApplicationContext>(options => options.UseSqlServer(Configuration.GetConnectionString("ConnectionString")));
          
        }

        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }

            app.UseHttpsRedirection();

            app.UseRouting();

            app.UseAuthorization();

            app.UseEndpoints(endpoints =>
            {
                endpoints.MapControllers();
            });
        }
    }
}

标签: asp.net-core-webapistartupdbcontextappsettingsasp.net-core-mvc-2.0

解决方案


尝试修复你的 appsettings json

"ConnectionStrings": {
  "DefaultConnection": "Data Source=TEKFRIDAY281;Initial Catalog=SampleApplication;User ID=sa;Password=friday123!;Trusted_Connection=True;MultipleActiveResultSets=true;Integrated Security=false;"
    },

和启动

  services.AddDbContext<SampleApplicationContext>(options => options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));

推荐阅读