sql-server - EF Core Update-Database 命令为用户创建架构而不是使用 dbo

标签 sql-server entity-framework .net-core migration entity-framework-core

我创建了一个 DbContext使用 EF Core 2.0 并且已经使用 Update-Database 在开发环境中应用了大量迁移在 PM 控制台中。
这些表是使用 dbo 创建的正如我从 EF6 所知道的那样,我的 localDb 上的架构符合预期。

但是,当我申请 Update-Database 时命令到我在 MSSQL 服务器上的生产数据库,它创建了一个名为 Domain\Username 的模式(我的机器上的用户)。当我使用其指定的域帐户运行服务器应用程序时,它无法访问数据库。作为一种解决方法,我与 IT 基础架构人员商量,允许此帐户在我的计算机上执行软件,并通过使用此帐户执行 VisualStudio 来应用迁移。然后为这个特殊帐户创建一个模式,此后它可以从网络服务器应用程序访问数据库。它有效,因为这个特殊帐户是目前唯一需要直接访问数据库的帐户(除了我自己)。但这应该是一个永久的解决方案。

有谁知道解决方案?该数据库的创建方式与之前的 EF6 项目完全相同。
为什么只在将迁移应用到生产系统时才使用每用户模式,而不是在我的开发机器上使用,我如何手动控制模式?
我试过 modelBuilder.HasDefaultSchema("dbo");但这不起作用。实际上它似乎根本没有任何影响。

最佳答案

我遇到了同样的问题,我相信这是由我的 domain\user 引起的。在 MyDatabase -> Security -> Users 下列出.我通过从用户中删除我的帐户(右键单击 - > 删除)解决了这个问题,下次我运行时 update-database它用“dbo”正确地为表格添加了前缀。

enter image description here

关于sql-server - EF Core Update-Database 命令为用户创建架构而不是使用 dbo,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49427962/

相关文章:

c# - 如何在 Entity Framework + SQL Server 中强制执行一对一关系

c# - EF 6 启用迁移找不到上下文

javascript - 如何从 JavaScript 运行 Razor 函数

exception - .NET Core-如何捕获StackOverflowException

c# - 将 Microsoft.AspNetCore.Hosting.WindowsServices 与 .Net Core 2.x 结合使用

sql-server - 单列(身份)表的用法?

sql-server - SQL Server 2019 : 'Microsoft.ACE.OLEDB.16.0' provider is not registered on the local machine. (System.Data)

sql-server - SQL Server 中如何检查数据库是否存在?

c# - 完整数据集而不是 Top 1000 EF Core

c# - Entity Framework : Server did not respond within the specified time out interval