Database First DBContext 在本地工作,但在部署时不工作
Database First DBContext works locally but not when deployed
我部署了一个 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="data source=.\SQLEXPRESS;initial catalog=ProdStore;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework"" providerName="System.Data.EntityClient" />
</connectionStrings>
我原以为一切都会为我处理,因为我使用的是 DbContext,但是当我部署并尝试发出需要数据库查询的获取请求时,我收到以下错误:
A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: SQL Network Interfaces, error: 26 - Error Locating Server/Instance Specified)
关于为什么会发生这种情况有什么想法吗?发布时我没有做任何特别的事情,我直接右键单击我的 class 库并点击发布。如果重要的话,我最初通过数据库优先方法生成了 DbContext。
这可能来自几件事。
检查您的部署服务器是否运行 Localdb
其次,检查数据库是否已经在部署的服务器上初始化。
第三,您是否能够通过您提供的凭据通过 Management Studio 登录数据库 - 确保您的用户详细信息在已部署的服务器上具有访问数据库的权限
你的问题是你的连接字符串说它是一个本地数据库。
您需要做的是在 Azure 中创建一个数据库,完成后您实际上可以看到该数据库的连接字符串,该连接字符串需要替换您拥有(本地)db[=10= 的当前连接字符串]
我部署了一个 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="data source=.\SQLEXPRESS;initial catalog=ProdStore;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework"" providerName="System.Data.EntityClient" />
</connectionStrings>
我原以为一切都会为我处理,因为我使用的是 DbContext,但是当我部署并尝试发出需要数据库查询的获取请求时,我收到以下错误:
A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: SQL Network Interfaces, error: 26 - Error Locating Server/Instance Specified)
关于为什么会发生这种情况有什么想法吗?发布时我没有做任何特别的事情,我直接右键单击我的 class 库并点击发布。如果重要的话,我最初通过数据库优先方法生成了 DbContext。
这可能来自几件事。
检查您的部署服务器是否运行 Localdb
其次,检查数据库是否已经在部署的服务器上初始化。
第三,您是否能够通过您提供的凭据通过 Management Studio 登录数据库 - 确保您的用户详细信息在已部署的服务器上具有访问数据库的权限
你的问题是你的连接字符串说它是一个本地数据库。 您需要做的是在 Azure 中创建一个数据库,完成后您实际上可以看到该数据库的连接字符串,该连接字符串需要替换您拥有(本地)db[=10= 的当前连接字符串]