Database First DBContext在本地工作,但在部署时不工作

时间:2016-03-06 17:32:23

标签: c# entity-framework dbcontext

我将一个webapi项目部署到azure,通过DbContext连接到数据库。一切都在本地工作,但是当我部署时,无论何时我发出需要访问我的DbContext的请求,我都会遇到错误。

我按如下方式打开连接:

 public ProductRepo(ProdStoreEntities context)
        {
            dbContext = context;
            dbContext.Database.Connection.Open();
        }

我的web.config如下:

<connectionStrings>
   <add name="DefaultConnection" connectionString="Data Source=(LocalDb)\v11.0;AttachDbFilename=|DataDirectory|\aspnet-CatalogAPI-20160227031830.mdf;Initial Catalog=aspnet-CatalogAPI-20160227031830;Integrated Security=True" providerName="System.Data.SqlClient" />
    <add name="ProdStoreEntities" connectionString="metadata=res://*/DbCache.csdl|res://*/DbCache.ssdl|res://*/DbCache.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=.\SQLEXPRESS;initial catalog=ProdStore;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" />
  </connectionStrings>

我原本以为我会使用DbContext处理所有内容,但是当我部署并尝试发出需要数据库查询的get请求时,我收到以下错误:

  

建立与SQL Server的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确,以及SQL Server是否配置为允许远程连接。 (提供程序:SQL网络接口,错误:26 - 查找指定的服务器/实例时出错)

关于为什么会发生这种情况的任何想法?我在发布时没有做过任何特别的事情,我直接点击我的类库并点击发布。如果重要的话,我首先通过数据库第一种方法生成DbContext。

2 个答案:

答案 0 :(得分:2)

这可能来自一些事情。

检查您是否在部署服务器上运行Localdb

其次,检查数据库是否已在已部署的服务器上初始化。

第三,您是否可以通过管理工作室通过您提供的凭据登录数据库 - 确保您的用户详细信息在部署的服务器上具有访问数据库的权限

答案 1 :(得分:0)

您的问题是您的连接字符串表明它是本地数据库。 您需要做的是在Azure中创建一个数据库,当您完成后,您实际上可以看到该数据库的连接字符串,该连接字符串需要替换您拥有(本地)数据库的当前连接字符串