asp.net-core – 从appsettings.json获取ConnectionString,而不是在.NET
|
我在NET Core2.0 App中有以下类。 // required when local database does not exist or was deleted
public class ToDoContextFactory : IDesignTimeDbContextFactory<AppContext>
{
public AppContext CreateDbContext(string[] args)
{
var builder = new DbContextOptionsBuilder<AppContext>();
builder.UseSqlServer("Server=localhost;Database=DbName;Trusted_Connection=True;MultipleActiveResultSets=true");
return new AppContext(builder.Options);
}
}
当Database不存在时,在Core 2.0中需要进行迁移,并且必须在运行update-database时创建。 我想在2个地方(这里和appsettings.json)没有ConnectionString,但只在.json中 "Server=localhost;Database=DbName;Trusted_Connection=True;MultipleActiveResultSets=true" 同 ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString 但它不起作用,我得到空值。 更新1: 更新2: public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<AppContext>(options => options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
}
}
但我不能将它用于ToDoContextFactory,因为它没有配置,并且迁移使用ToDoContextFactory,因此App根本不运行。 解: public AppContext CreateDbContext(string[] args)
{
string projectPath = AppDomain.CurrentDomain.BaseDirectory.Split(new String[] { @"bin" },StringSplitOptions.None)[0];
IConfigurationRoot configuration = new ConfigurationBuilder()
.SetBasePath(projectPath)
.AddJsonFile("appsettings.json")
.Build();
string connectionString = configuration.GetConnectionString("DefaultConnection");
var builder = new DbContextOptionsBuilder<AppContext>();
builder.UseSqlServer(connectionString);
return new AppContext(builder.Options);
}
解决方法第1步:在OnConfiguring()中包含以下内容protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
IConfigurationRoot configuration = new ConfigurationBuilder()
.SetBasePath(AppDomain.CurrentDomain.BaseDirectory)
.AddJsonFile("appsettings.json")
.Build();
optionsBuilder.UseSqlServer(configuration.GetConnectionString("DefaultConnection"));
}
第2步:创建appsettings.json: {
"ConnectionStrings": {
"DefaultConnection": "Server=YOURSERVERNAME; Database=YOURDATABASENAME; Trusted_Connection=True; MultipleActiveResultSets=true"
}
}
第3步:将appsettings.json硬拷贝到正确的目录 Hard copy appsettings.json.config to the directory specified in the AppDomain.CurrentDomain.BaseDirectory directory. Use your debugger to find out which directory that is. 假设:您已经在项目中包含了Microsoft.Extensions.Configuration.Json(从Nuget获取)包。 (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- ASP.Net MVC与ASP.Net表格
- asp.net-mvc – ASP.NET MVC中的替代用户管理
- asp.net-mvc-3 – MVC站点地图提供程序 – 在痕迹路径中维护
- asp.net – MVC Controller返回Chunked内容编码
- asp.net – 如何添加.aspx页面到现有的MVC 4项目?
- asp.net-mvc – View()vs. PartialView()
- asp.net – 使用MVC2的AJAX请求中的CSRF保护
- asp.net – 使用codebehind显示隐藏div
- asp.net-mvc – Kendo ASP.NET MVC – 索引超出范围数据绑定
- ASP.net页面在import语句中获取错误,但我有参考的地方吗?
- asp.net-mvc – 从asp.net POST动作方法更新nhib
- asp.net-mvc – ASP.NET MVC路由和静态数据(即图
- asp.net-mvc – 使用AutoMapper的控制器上的单元
- asp.net-mvc-3 – 指定Html.TextBoxFor的大小和最
- ASP.NET Web窗体DropDownList具有SelectedValue,
- asp.net-mvc – 在MVC中使用ViewModels进行POST操
- asp.net-mvc – MVC 4 ModelBinder
- 为什么ASP.NET抛出这么多异常?
- asp.net-mvc – 防止没有确认电子邮件的用户登录
- asp.net-mvc-4 – ASP.NET帮助页面默认主页?
