实体框架核心启用 - 迁移使用错误构建Configuration.cs文件

时间:2017-02-17 05:26:20

标签: c# entity-framework uwp template10

我经过多次戏剧后运行了Enable-Migrations我终于得到了正确的命令,以便在我的项目中创建Migrations目录。

但是,这是它给我回复的文件..我已将使用语句移到顶部并删除了无效的文件,但这就是我改变的全部内容。

Configuration with errors

原始代码..错误位于上面的图片链接中。

internal sealed class Configuration : DbMigrationsConfiguration<RapidDeploy.Models.BloggingContext>
{
    public Configuration()
    {
        AutomaticMigrationsEnabled = false;
    }

    protected override void Seed(RapidDeploy.Models.BloggingContext context)
    {
        //  This method will be called after migrating to the latest version.

        //  You can use the DbSet<T>.AddOrUpdate() helper extension method 
        //  to avoid creating duplicate seed data. E.g.
        //
        //    context.People.AddOrUpdate(
        //      p => p.FullName,
        //      new Person { FullName = "Andrew Peters" },
        //      new Person { FullName = "Brice Lambson" },
        //      new Person { FullName = "Rowan Miller" }
        //    );
        //
    }
}

4 个答案:

答案 0 :(得分:2)

我不知道你哪里出错,但Entity Framework Core中没有Enable-Migrations命令(或DbMigrationsConfiguration类)。这些只是实体框架的第6件事。

答案 1 :(得分:1)

首先让我们登上正确的页面......

https://docs.microsoft.com/en-us/ef/core/get-started/uwp/getting-started

其次是不幸的新闻......但似乎有人将其改编成播种功能。 MS的最新版本目前不支持权利,它是生成代码的第二方。它是以前在EF6版本中修改的代码的改编版。另请注意,代码基于Asp.net Core而不是UWP。

https://github.com/aspnet/EntityFramework/issues/629

答案 2 :(得分:0)

添加using System.Data.Entity.Migrations;

这可以解决您的问题 该错误是因为you have not referenced the library which contains definition for DbMigrationCongfiguration

希望这有帮助。

答案 3 :(得分:0)

古老的问题,但我希望它能有所帮助。

尝试在新的EFCore项目中使用一些EF6代码时,我遇到了同样的问题,我使用“ Core”方式进行了许多教程来播种,但我并不满意(我不希望看到迁移中的种子数据...以我的观点,旧的流程,首先是更新架构,然后是种子数据,才有意义。

顺便说一句,我最终得到了最简单(但不是很明显)的解决方案:Startup.cs> Configure method中的种子!

  1. 将您的上下文添加为Configure方法的参数
  2. 调用您的SeedData方法
public void Configure(IApplicationBuilder app, IWebHostEnvironment env, ... , MyDBContext context)
{
   ...
   ContextInizializer.SeedData(context);
   ...
}
  1. 添加/更新数据
public class ContextInizializer
{
   public static void SeedData(RPToolDBContext context)
   {

      var item = new MyEntity()
      {
         Title = "MyTitle",
      };
      if(context.MyEntities.FirstOrDefault(f=>f.Title == item.Title)) {
         context.MyEntities.Add(item);
         context.SaveChanges();
      }
   }
}

种子将在每次启动时运行(以EF6方式仅在update-database命令之后运行),因此请确保在添加东西之前进行检查!

完成!