Azure SQL数据库返回0行的实体框架

时间:2015-01-31 19:59:37

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

我在Azure中设置了一个新应用程序,并且我正在使用Azure SQL数据库。我使用Entity Framework从ASP.NET MVC应用程序连接到它。

我的设置如下:我有一个包含2个项目的解决方案。在我的一个项目中,我有我的实体模型。这是我设置与实体框架的连接并生成模型(代码优先)的地方。另一个项目是我的ASP.NET MVC项目。这是我从第一个项目调用代码来检索数据的地方。我从我的MVC项目中运行以下代码:

        using (var db = new MyEntities())
        {
            var x = db.Table1.FirstOrDefault(); //this is null because nothing in table
        }

Entity项目的配置文件如下:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>

    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=*********" requirePermission="false" />
  <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 --></configSections>
  <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
      <parameters>
        <parameter value="mssqllocaldb" />
      </parameters>
    </defaultConnectionFactory>
    <providers>
      <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
    </providers>
  </entityFramework>
  <connectionStrings>
    <add name="MyEntities" connectionString="data source=MY_DATABASE_HERE.windows.net,1433;initial catalog=MyDB;persist security info=True;user id=MY_USERNAME_HERE;password=MY_PASSWORD_HERE;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" />
  </connectionStrings>
</configuration>

我已从其中删除了敏感信息,但我已经验证了它是正确的 - 无论如何我都没有收到连接错误。我能想到的另一件事是我的用户没有配置适当的权限,但我无法在Azure门户中找到检查/修改它的位置。

我是Azure的新手,所以我可能做错了什么,但我似乎无法找到我的设置有什么问题。

1 个答案:

答案 0 :(得分:1)

此临时解决方案是将我的base("name=DefaultConnection")更改为包含整个连接字符串。这允许连接,但显然不理想。

然后,我在我的Entity Framework项目上运行了一个反向工程师,它为我生成了一个合适的连接字符串(包括用它正确修复上面的base()设置。

Right click on the Entity Framework project

我确定大多数人都不必走这条路,但我想我会发布我的解决方案以防万一。