【问题标题】:Entity Framework MigrateDatabaseToLatestVersion CREATE DATABASE permission denied in database 'master' error实体框架 MigrateDatabaseToLatestVersion CREATE DATABASE 权限在数据库“主”错误中被拒绝
【发布时间】:2017-02-15 00:52:58
【问题描述】:

我一直在查看这里的问题,但还没有遇到任何与我的问题有关的问题,如果这是重复的并且我遗漏了一些东西,我深表歉意。

我有一个带有实体框架代码优先的 ASP.Net MVC 项目。 在我的 Dbcontext 中,我有;

public Context() : base("DatabaseName")
{
    System.Data.Entity.Database.SetInitializer(new MigrateDatabaseToLatestVersion<Context, Configuration>());
}

在我的网络配置中我有;

<connectionStrings>
<add name="DatabaseName" connectionString="connsection string is here"/>
</connectionStrings>

部署我的应用程序时,出现错误

'数据库'master'中的CREATE DATABASE权限被拒绝。'立刻 它第一次尝试访问上下文。

我不明白的是如何阻止它尝试创建数据库并只使用我给它的连接字符串。数据库已经存在(它在共享主机上,所以我对它没有太多控制权)并且我知道连接字符串是正确的,因为我在同一个应用程序中安装了 Hangfire,使用相同的连接字符串并且它已成功创建表但由于某种原因,EF 不会在数据库中创建表,而是尝试创建一个,但它无法做到。

Entity Framework 和配置文件安装在同一个项目中,实际上是一个单项目应用。

我尝试创建另一个数据库并添加第二个连接字符串,以防 Hangfire 阻止 EF 使用它但遇到同样的问题。我也尝试将完整的连接字符串直接放入上下文中的:base(""),但没有任何效果。

【问题讨论】:

  • 你是要访问本地数据库还是sql server db?
  • 它是与主机不同的机器上的 SQL 服务器数据库
  • 在我的特殊情况下,“初始目录”不正确。

标签: c# asp.net asp.net-mvc entity-framework


【解决方案1】:

尝试按名称获取connectionString

public Context()
            :base("name=DbConnection")
        {

        }

Web.config文件中添加

 <connectionStrings>
    <add name="DbConnection" connectionString="Data Source=serveraddress;Persist Security Info=False;User ID=usename;Password=pass;Initial Catalog=databasename" providerName="System.Data.SqlClient" />
  </connectionStrings>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-10-20
    • 2016-12-17
    • 1970-01-01
    • 2014-11-14
    • 1970-01-01
    • 1970-01-01
    • 2023-03-05
    • 1970-01-01
    相关资源
    最近更新 更多