c#Azure EntityFramework SQL Server数据库错误

时间:2014-04-08 11:28:17

标签: c# .net sql-server entity-framework azure

在VS2013中,我创建了一个Asp.net WebAPI项目,该项目使用EntityFramework将数据保存/检索到SQL Server数据库中。 SQL Server数据库托管在Azure中。

我有一个在我的Web API项目中执行此操作的Controller类,它一切正常......直到我将我的WebAPI项目发布到Azure然后我得到一个错误:

InnerException: System.Data.SqlClient.SqlException. Message=Invalid object name 'dbo.MyTableName'.

重要的是要注意,当我使用Localhost运行WebAPI项目时,这工作正常。

有谁知道如何调查问题是什么?我已经附加到调试器并提出了一个断点。我可以看到它在这条线上失败了:

db.MyTableName.Find(id);

当我返回一个硬编码值时,它工作正常,所以使用EntityFramwork连接到数据库显然是一个问题。 我的预感是,上传到Azure后,EntityFramework的Model对象的引用路径不正确。在web.config中: 元数据= RES:// * / Model1.csdl ...

我尝试过metadata = res://MyAssemblyName/Model1.csdl ...

我尝试过metadata = res://MyAssemblyName.dll/Model1.csdl ...

但仍有同样的错误。我可以尝试其他任何变化吗?

我还更新了SQL Server / azure FIREWall以确保允许使用正确的IP地址,但这也不是问题。

有什么想法吗?

EDIT 我也试过这些连接字符串没有运气

connectionString="metadata=res://AssemblyName/Model1.csdl|res://AssemblyName/Model1.ssdl|res://AssemblyName/Model1.msl;provider=System.Data.SqlClient;provider connection string="Data Source=tcp:xxx.database.windows.net,1433;Initial Catalog=dev_db;User Id=xxx;Password=xxx;" providerName="System.Data.EntityClient"
connectionString="metadata=res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl;provider=System.Data.SqlClient;provider connection string="Data Source=tcp:xxx.database.windows.net,1433;Initial Catalog=dev_db;User Id=xxx;Password=xxx;" providerName="System.Data.EntityClient"

2 个答案:

答案 0 :(得分:0)

对于Azure SQL,您的实体连接字符串应如下所示:

connectionString="metadata=res://*/xxxDataModel.csdl|res://*/xxxDataModel.ssdl|res://*/xxxDataModel.msl;provider=System.Data.SqlClient;provider connection string="data source=xxx.database.windows.net;initial catalog=xxxData;User Id=xxx;password=xxx;MultipleActiveResultSets=True;App=EntityFramework""

答案 1 :(得分:0)

在将代码发布到Azure期间,连接字符串自动更改了。因此,我必须在Azure服务器上编辑web.config文件并重新启动网站并运行