【发布时间】:2017-05-28 10:46:37
【问题描述】:
我正在尝试将 Entity Framework Core 与 Code First 方法一起使用。
到目前为止,我已经开发了一些模型和我的上下文。然后我添加了 EntityFrameworkCore.Tools 来处理迁移。我在 appsettings 中定义了我的 ConnectionString 属性,如下所示:
"Data": {
"ConnectionString": "Data Source=localhost;Initial Catalog=TestDb;User Id=user;Password=pass; Pooling=true; Max Pool Size=200; Min Pool Size=5"
}
(顺便说一句,用户名和密码正确)
在我的 DbContext 中,我做了以下事情:
public MyContext()
{
Database.EnsureCreated();
}
// ...
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
var connString = Startup.Configuration["Data:ConnectionString"];
optionsBuilder.UseSqlServer(connString);
base.OnConfiguring(optionsBuilder);
}
当我运行Add-Migration InitialDatabase 时,它运行良好,它使用它的表创建了我的迁移。然后当我启动应用程序时,由于MyContext 中的Database.EnsureCreated(),它为我创建了数据库并且它工作正常。
问题是我想控制我的迁移。所以我不想依赖EnsureCreated。问题是当我执行Update-Database 时,该命令显然有效(它没有显示任何错误),但它没有创建我的数据库。我想我错过了一种告诉Update-Database 我的连接字符串在哪里的方法。我知道您可以将参数传递给它,但我见过有人在没有参数的情况下使用它。我怎样才能做到这一点?
谢谢!
【问题讨论】:
-
我没有使用 EF-core,但对于标准 EF,我使用“update-database -project
-startupproject -connectionstringname ”。 app/web.config 中可以有多个连接字符串。 -
数据库是否已经存在?如果 Update-Database 找不到连接字符串,则会抛出错误。只有在数据库已经存在并且没有什么要更新的情况下,它才会是无操作的。
标签: entity-framework entity-framework-core entity-framework-migrations