Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Entity framework 在共享主机环境中运行EF数据库迁移_Entity Framework_Entity Framework 6 - Fatal编程技术网

Entity framework 在共享主机环境中运行EF数据库迁移

Entity framework 在共享主机环境中运行EF数据库迁移,entity-framework,entity-framework-6,Entity Framework,Entity Framework 6,我在共享主机上托管了一个站点,当尝试运行“更新数据库”时,我遇到以下错误: 此操作需要连接到“主”数据库。不能的 创建到“主”数据库的连接,因为原始 数据库连接已打开,凭据已删除 从连接字符串。提供未打开的连接 显然提供商不会给我访问master的权限。我运气不好吗?更新数据库确实需要访问“主”数据库才能添加新数据库。实体框架假定默认情况下数据库不存在,并将运行Create database。如果您的主机提供程序只允许您访问共享实例,而不是共享服务器上您自己的实例,那么您可能无法在没有他们的帮助

我在共享主机上托管了一个站点,当尝试运行“更新数据库”时,我遇到以下错误:

此操作需要连接到“主”数据库。不能的 创建到“主”数据库的连接,因为原始 数据库连接已打开,凭据已删除 从连接字符串。提供未打开的连接


显然提供商不会给我访问master的权限。我运气不好吗?

更新数据库
确实需要访问“主”数据库才能添加新数据库。实体框架假定默认情况下数据库不存在,并将运行
Create database
。如果您的主机提供程序只允许您访问共享实例,而不是共享服务器上您自己的实例,那么您可能无法在没有他们的帮助下创建新数据库


如果您使用命令
updatedatabase-Script-SourceMigration:$InitialDatabase
,它将生成一个
.sql
脚本,可以由托管提供商或通过他们提供的任何门户对数据库运行。

为什么您的迁移要尝试访问主数据库?它应该只尝试在应用程序的数据库中执行操作。您是否有涉及master的自定义迁移?没有。但是EF在启动更新之前运行此命令-“选择cast(serverproperty('EngineEdition')as int”,我认为这需要访问master db。我不希望这需要访问
master
,但我相信访问serverproperties的权限是可以控制的。主数据库中添加了哪些表?太好了。虽然不太理想,但这是一个可行的解决方案。谢谢更清楚地说,实体框架实际上试图将新数据库添加到“主”表中,这对我来说毫无意义。我怀疑updatedatabase-Script会为引用master的任何内容编写脚本。也有可能在使用正确的名称创建数据库后,其余的updatedatabase命令将正常工作。