【发布时间】:2020-05-03 02:36:37
【问题描述】:
在我的解决方案中,我有几个 .NET Core 2.0 项目:
- App.DataAccess
- App.DataAccess.Migrations
- App.WebApi
在App.DataAccess.Migrations(我想用作迁移程序集)中,我有一个AppDbContextFactory 类:
namespace App.DataAccess.Migrations
{
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Design;
using Microsoft.Extensions.Configuration;
using System.IO;
public sealed class AppDbContextFactory : IDesignTimeDbContextFactory<AppDbContext>
{
public AppDbContextFactory()
{
Configuration = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json")
.Build();
}
public IConfiguration Configuration { get; }
public AppDbContext CreateDbContext(string[] args)
{
DbContextOptionsBuilder<AppDbContext> builder = new DbContextOptionsBuilder<AppDbContext>();
builder.UseSqlServer(
connectionString: Configuration.GetConnectionString("DefaultConnection"),
sqlServerOptionsAction: sqlOptions => sqlOptions.MigrationsAssembly(GetType().Namespace));
return new AppDbContext(builder.Options);
}
}
}
在同一个项目中,我还有一个appsettings.json文件:
{
"ConnectionStrings": {
"DefaultConnection": "Data Source=.\\SQLEXPRESS;Initial Catalog=MyApp;User ID=sa;Password=SomethingSecret;Trusted_Connection=True;MultipleActiveResultSets=true"
}
}
在我的App.WebApi 项目中,我的Startup 类中有以下内容:
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<AppDbContext>(ConfigureDatabaseOptions);
services.AddMvc();
}
private void ConfigureDatabaseOptions(DbContextOptionsBuilder builder)
{
builder.UseSqlServer("DefaultConnection", ConfigureSqlServerDatabaseOptions);
}
private void ConfigureSqlServerDatabaseOptions(SqlServerDbContextOptionsBuilder builder)
{
builder.MigrationsAssembly(typeof(AppDbContextFactory).Namespace);
}
在同一个项目中,我还将连接字符串添加到appsettings.json。
添加迁移有效。
Update-Database 抛出此错误:
System.ArgumentException:初始化字符串的格式不 符合从索引 0 开始的规范。
为什么?
【问题讨论】:
-
不起作用不是问题陈述。到底发生了什么?
-
@CamiloTerevinto 很抱歉,我忽略了添加错误。帖子已更新。
标签: c# asp.net-core entity-framework-core