代码优先迁移的实体框架错误

时间:2014-11-06 20:09:00

标签: asp.net-mvc-5 entity-framework-6 ef-migrations localdb

在为LocalDb数据库发出Add-Migration命令时,使用程序包管理器控制台Visual Studio 2013发生此错误:

  

从数据库获取提供程序信息时发生错误。这可能是由实体框架使用不正确的连接字符串引起的。检查内部异常以获取详细信息,并确保连接字符串正确。

这是一个使用Entity Framework 6.0.0的MVC 5项目。

以下是web.config的EF特定部分:

<configSections>
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</configSections>
<connectionStrings>
<add name="Application" connectionString="Data Source=(LocalDb)\v11.0;AttachDbFilename=|DataDirectory|\aspnet-XXXXManagement-20141105035546.mdf;Initial Catalog=aspnet-XXXXManagement-20141105035546;Integrated Security=True;MultipleActiveResultSets=True"
  providerName="System.Data.SqlClient" />
</connectionStrings>
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
  <parameters>
    <parameter value="v11.0" />
  </parameters>
</defaultConnectionFactory>
<providers>
  <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>
</entityFramework>

我可以添加迁移并更新数据库。但是当我尝试添加另一个迁移时,我收到错误。我可以通过打开web.config文件并保存它来解决问题(ctrl-s)。然后我可以再添加一次迁移。

为什么会这样?

上下文:

using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Linq;
using System.Web;

using OIVSManagement.Model;

namespace OIVSManagement.Database
{
  public class ApplicationContext : DbContext
  {
    public DbSet<Organization> Organizations { get; set; }
  }
}

组织模式:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace OIVSManagement.Model
{
    public class Organization
    {
      public virtual int Id { get; set; }

      public virtual string Name { get; set; }

      public virtual List<Contact> Contacts { get; set; }
    }
}

联系模式:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace OIVSManagement.Model
{
  public class Contact
  {
    public virtual int Id { get; set; }

    public virtual Organization Organization { get; set; }

    public virtual ContactCategory Category { get; set; }

    public virtual string FirstName { get; set; }

    public virtual string LastName { get; set; }

    public virtual List<EmailAddress> EmailAddresses { get; set; }
  }
}

0 个答案:

没有答案