目前,我正在将我的应用程序部署到一个共享托管环境中,代码优先和迁移一直运行良好,只是有一个小问题.每次我想要推送站点时,我都必须使用"更新数据库-脚本"选项,因为我必须在每个表名前加上[dbo]
,因为默认情况下,共享主机会创建一个与数据库用户名相同的默认模式名.
如果我登录到共享主机并创建一个数据库,那么我必须创建一个用户.如果我将该用户命名为admin,那么代码在以admin身份登录时首先创建的表类似于"[admin].[BlogPosts]".当应用程序运行时,所有的表都会被创建,但我得到一个EF异常,因为它说"[dbo].[BlogPosts]"无效.如果我将表的模式名重命名为"[dbo]"而不是"[admin]",则会修复它.
为了解决这个问题,我必须生成一个手动执行的迁移脚本,并在所有表名之前添加"[dbo]",因为该脚本只按表名引用表,而不按表的模式和名称引用表.
有没有简单的方法来解决这个问题?如果我所要做的就是发布应用程序,然后一切正常,那就太好了.如果不是因为模式名的差异,它将是一个一键式部署,一切都会很美好.