【问题标题】:Entity Framework with Azure SQL Database Returning 0 Rows具有 Azure SQL 数据库的实体框架返回 0 行
【发布时间】:2015-01-31 19:59:36
【问题描述】:

我正在 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 的新手,所以我可能做错了什么,但我似乎找不到我的设置有什么问题。

【问题讨论】:

  • 可能是一个愚蠢的问题,但您确定您的数据库中实际上有任何数据吗?你连接过sql srv mgt studio吗?
  • 此外,您需要 tcp: 在连接字符串的开头,但您没有看到连接错误的事实表明这不是一个因素。
  • 如果它是一个 Azure 网站,您应该能够看到 Azure 门户中使用的实际连接字符串 - 可能值得检查一下某处没有进行转换。
  • @Frans 是的,我检查了数据。它存在,我可以从 SQL Server Management Studio 连接并查看它。我检查了 Azure 中的连接字符串,它与我输入的内容相匹配。这是在审计和安全下的启用安全连接字符串下。
  • 很奇怪。我已经根据我的一个实时站点检查了您的设置,它看起来大致相同。抱歉,不知道出了什么问题:(

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


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2016-05-21
    • 1970-01-01
    • 1970-01-01
    • 2017-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多