【发布时间】:2012-03-22 16:51:51
【问题描述】:
目前,我正在将我的应用程序部署到共享托管环境中,并且代码优先的迁移一直运行良好,除了一个小问题。每次我想推送站点时,我都必须使用“Update-Database -script”选项,因为我必须在每个表名前面加上[dbo],因为默认情况下,共享主机会创建一个与数据库用户名。
如果我登录到我的共享主机并创建一个数据库,那么我必须创建一个用户。如果我将该用户命名为 admin,那么在以 admin 身份登录时代码首先创建的表看起来类似于“[admin].[BlogPosts]”。当应用程序运行时,所有表都已创建,但我得到一个 EF 异常,因为它说“[dbo].[BlogPosts]”无效。如果我将表的架构名称重命名为“[dbo]”而不是修复它的“[admin]”。
为了解决这个问题,我必须生成一个手动执行的迁移脚本,并在所有表名前添加“[dbo]”,因为该脚本仅按表名引用表,而不是通过模式和名称引用表.
有没有简单的方法来解决这个问题?如果我所要做的就是发布应用程序并且一切正常,那就太好了。如果不是因为架构名称的差异,那将是一键部署,一切都会很美好。
【问题讨论】:
-
您可以尝试为您的管理员帐户运行
ALTER USER,并将dbo指定为默认架构。 (这并不能回答所提出的问题,但可能是一个解决方案) -
我实际上比手动指定表映射更喜欢这个解决方案。
-
这个问题的标题是“我可以在实体框架4.3代码优先中更改默认模式名称吗?”接受的答案是我认为最能回答这个问题的答案。
标签: c# sql entity-framework entity-framework-4 ef-code-first