EF Code First(代码优先)错误及解决

在使用visio studio 2013 进行 EF Code First 开发时,如果处理不当,有时系统会出现一些异常错误,导致无法生成(或更新)数据库。

在程序集“XXX”中未找到迁移配置类型“XXX.Migrations.Configuration”。

在“程序包管理控制器”中采用 enable-migrations 时,在“程序包管理控制器”中有时会出现红字错误提示“在程序集“XXX”中未找到迁移配置类型“XXX.Migrations.Configuration”(XXX 为工程名称)

该错误主要原因在于:在配置文件web.config(或App.config)中的相关配置与工程中定义的数据集操作类文件不匹配

下面举例说明:

已经新建的model类如下

    public class Book
    {
        [Key]
        public int bookid { get; set; }

        public string bookname { get; set; }
        public int pages { get; set; }
    }

其对应的db操作类如下

    public class BookDb:DbContext
    {
        DbSet<Book> books { get; set; }
    }

那么在对应的web.config中 相应的数据库连接串应为

  <connectionStrings>
    <add name="BookDb" providerName="System.Data.SqlClient" connectionString="Data Source=.;Initial Catalog=aspnet-MVCEF-2-20180605154706;User Id=sa;pwd=sa;" />
  </connectionStrings>

注意name 名称一定要与db操作类一致。

不支持关键字: “XXX”


在“程序包管理控制器”中采用 enable-migrations 时,有时会出现红字错误提示“不支持关键字“xxx””

此时,需关注配置文件中connectionStrings的书写是否符合规定,例如提示错误“不支持关键字“userid””,其原因connectionStrings为

  <connectionStrings>
    <add name="DefaultConnection" providerName="System.Data.SqlClient" connectionString="Data Source=.;Initial Catalog=aspnet-MVCEF-2-20180605154706;userid=sa;pwd=sa;" />
  </connectionStrings>

应将相应的字符串调整为

  <connectionStrings>
    <add name="DefaultConnection" providerName="System.Data.SqlClient" connectionString="Data Source=.;Initial Catalog=aspnet-MVCEF-2-20180605154706;User ID=sa;pwd=sa;" />
  </connectionStrings>


猜你喜欢

转载自blog.csdn.net/mystonelxj/article/details/80582245