我们有三个项目。

  • Company.Domain(类库)
  • Company.Public网站(MVC3 Web应用程序)
  • Company.InternalWeb站点(MVC3 Web应用程序)

  • 这两个网站项目都引用了Company.Domain

    我们的EF 5 DbContext位于Company.Domain.Data.EntityFramework中,它看起来像这样:
    using System.Data.Entity;
    using Company.Domain.Data.EntityFramework.Entities;
    
    namespace Company.Domain.Data.EntityFramework.
    {
        public class CompanyEntities : DbContext
        {
            public DbSet<Notification> Notifications { get; set; }
            public DbSet<Report> Reports { get; set; }
            public DbSet<ReportSection> ReportSections { get; set; }
            public DbSet<ReportPage> ReportPages { get; set; }
            // brevity brevity
        }
    }
    

    过去,我们已经启用了迁移并成功使用了该工具,所以我不确定为什么现在遇到问题。我们的迁移配置位于Company.Domain.Data.EntityFramework.Migrations中,如下所示:
    namespace Company.Domain.Data.EntityFramework.Migrations
    {
        using System;
        using System.Data.Entity;
        using System.Data.Entity.Migrations;
        using System.Linq;
        using Company.Domain.Data.EntityFramework;
    
        public class Configuration : DbMigrationsConfiguration<CompanyEntities>
        {
            public Configuration()
            {
                MigrationsDirectory = @"Data\EntityFramework\Migrations";
                AutomaticMigrationsEnabled = false;
            }
    
            protected override void Seed(CompanyEntities context)
            {
                // empty at the moment
            }
        }
    }
    

    然后,我们在App.config项目的根目录中有一个Company.Domain文件,它看起来像这样:
    <?xml version="1.0" encoding="utf-8"?>
      <configuration>
        <configSections>
          <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
          <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
        </configSections>
        <connectionStrings>
          <add name="CompanyEntities" providerName="System.Data.SqlClient" connectionString="Data Source=devsql;Initial Catalog=CompanyEntities;uid=XXXXX;pwd=XXXXX;MultipleActiveResultSets=True;" />
        </connectionStrings>
        <entityFramework>
          <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
            <parameters>
              <parameter value="v11.0" />
            </parameters>
          </defaultConnectionFactory>
        </entityFramework>
        <startup>
          <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
        </startup>
      </configuration>
    

    我们的数据库位于网络上的另一台服务器上。我可以在SQL Server Management Studio中连接到它,并且我们的应用程序可以在运行时很好地连接。但是,当我尝试运行add-migration甚至update-database时,出现以下错误:

    http://content.screencast.com/users/Chevex/folders/Snagit/media/80fbfd6a-4956-407f-b88f-d5a53a9e5feb/03.21.2013-10.25.png



    我什至将我的更改恢复到模型,然后运行update-database只是看它是否会显示“数据库正在最新迁移”,但仍然出现上述错误。我一遍又一遍地倒在App.config中的连接字符串上。我不知道为什么迁移无法连接,但是我们的两个网站项目在运行时都能正常工作。迁移过去一直有效。下面是在解决方案资源管理器中的迁移与在数据库的__MigrationHistory表中找到的迁移相比。

    http://content.screencast.com/users/Chevex/folders/Snagit/media/7abeaa46-ff0f-4817-a0d7-1adb086e8f0c/03.21.2013-10.30.png

    http://content.screencast.com/users/Chevex/folders/Snagit/media/3c6ac54d-f63d-417f-9253-39b6a8fea85d/03.21.2013-10.32.png

    看来我应该能够运行update-database并告诉我它是最新的,但我收到了该错误。

    据我了解,当我运行迁移命令时,迁移不应引起我们两个网站项目的注意,但是为了以防万一,我也将它们放在了Web.config文件中。连接字符串与App.config相同。

    编辑:

    我什至尝试从项目中完全卸载和删除EF 5软件包,然后重新安装。相同的问题> :(

    最佳答案

    您的启动项目是否包含web.config或app.config,因为EF使用启动项目作为连接字符串的源

    关于c# - EF 5迁移无法连接到我们的数据库,即使它在运行时也很好,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15553199/

    10-12 12:43
    查看更多