目前,我正在将我的应用程序部署到共享主机环境,并且除了一个小小的打嗝之外,代码优先与迁移一直很好。每次我想要推送站点时,我必须使用“Update-Database -script”选项,因为我必须在[dbo]
前面加上每个表名,因为默认情况下共享主机会创建一个与数据库用户名同名的默认模式名。我可以更改实体框架4.3代码优先的默认模式名称吗?
如果我登录到我的共享主机并创建数据库,则必须创建一个用户。如果我将该用户名命名为admin,那么在以admin身份登录时,代码首先会创建如下所示的“[admin]。[BlogPosts]”。当应用程序运行时,所有的表都被创建,但是我得到一个EF异常,因为它表示“[dbo]。[BlogPosts]”无效。如果我将该表的模式名称重命名为“[dbo]”,而不是“[admin]”,修复它。
为了解决这个问题,我必须生成一个手动执行的迁移脚本,并在所有表名之前添加“[dbo]”,因为脚本只通过名称引用表,而不是通过它们的模式和它们的名称名称。
有没有简单的方法来解决这个问题?如果我所要做的只是发布应用程序并且一切正常,那将会非常好。如果不是模式名称的差异,它将是一次点击部署,一切都将是光荣的。
您可以尝试为管理员帐户运行['ALTER USER'](http://msdn.microsoft.com/en-us/library/ms176060.aspx)并指定'dbo'作为默认模式。 (这并没有回答这个问题,但可能是一个解决方案) – 2012-03-05 07:42:56
我实际上喜欢这个解决方案远比手动指定表映射更好。 – Chev 2012-03-05 08:10:44
这个问题的标题是“我可以在实体框架4.3 code-first?中更改默认模式名称吗?”接受的答案是我觉得最好的答案是那个问题。 – Chev 2016-09-21 07:43:34