我有一个Web应用程序的解决方案。此应用程序使用Entity Framework和Code First。然后我有第二个项目,一个控制台应用程序。此控制台应用程序共享用于保存迁移的程序集。
这个控制台应用程序是否应该永远不会运行迁移?可能会发生此控制台应用程序将包含尚未在Web应用程序中部署的较新版本。我想确保控制台没有破坏Web应用程序的风险。最好让控制台无法更新数据库。
答案 0 :(得分:0)
简单)是的,我有一个很好的解决方案。在Nuget Console中,您必须为命令提供连接字符串和目标迁移:Add-Migration / Update-Database。
需要代码)您也可以使用DbMigrator以编程方式执行此操作。
答案 1 :(得分:0)
在SELECT * FROM table_name
WHERE FIND_IN_SET('php',`your_colum_name_containing_values`);
构造函数中将数据库初始化设置为null:
DbContext
可替换地, 在您的Web应用程序中:
public class ConsoleContext : DbContext
{ public ConsoleContext()
: base("Name=" + Config.ConnectionStringName)
{
// Prevent attempt to initialize a database for this context
Database.SetInitializer<DtoContext>(null);
}
}
并在您的控制台应用程序中:
protected void Application_Start()
{
Database.SetInitializer<MyDbContext>(
new MigrateDatabaseToLatestVersion<MyDbContext, Migrations.Configuration>());
}
而且,更确切地说,使用两个不同的数据库用户。如果您使用的是Sql Server,则Web应用程序将需要protected void Application_Start()
{
Database.SetInitializer<DtoContext>(null);
}
,db_datareader
和db_datawriter
个角色。控制台应用程序应该只有db_ddladmin
和db_datareader
个角色才能阻止它更改数据库架构