Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Entity framework 实体框架迁移种子重复行_Entity Framework_Entity Framework Migrations - Fatal编程技术网

Entity framework 实体框架迁移种子重复行

Entity framework 实体框架迁移种子重复行,entity-framework,entity-framework-migrations,Entity Framework,Entity Framework Migrations,我有两节课 public class Category { public int Id { get; set; } public string Name { get; set; } } public class Item { public int Id { get; set; } public sting Name { get; set; } public Category Category { get; set; } } 我有EF迁移和以下种子: var instock

我有两节课

public class Category
{
  public int Id { get; set; }
  public string Name { get; set; }
}

public class Item
{
  public int Id { get; set; }
  public sting Name { get; set; }
  public Category Category { get; set; }
}
我有EF迁移和以下种子:

var instockCategory = new Category() { Name = "InStock" };
var outofStockCategory = new Category() { Name = "OutOfStock" };

context.Items.AddOrUpdate(
 d => d.Name,
 new Item() { Name = "Item1", Category = instockCategory },
 new Item() { Name = "Item2", Category = outofStockCategory },
 new Item() { Name = "Item3", Category = outofStockCategory }
);
行“d=>d.Name”确保基于项的名称,在我为数据库重新设定种子时不会有重复的记录。 但是,在我第一次执行此操作时,创建了id为1和2的两个类别。但第二次运行时,创建了3个新类别!
我可以在不先手动添加每个类别的情况下修复此问题吗?

您也必须对您的类别使用
addor update

var instockCategory = default(Category);
var outofStockCategory = default(Category);

context.Set<Category>().AddOrUpdate(
    c => c.Name,
    instockCategory = new Category() { Name = "InStock" },
    outofStockCategory = new Category() { Name = "OutOfStock" }
);

context.Items.AddOrUpdate(
    d => d.Name,
    new Item() { Name = "Item1", Category = instockCategory },
    new Item() { Name = "Item2", Category = outofStockCategory },
    new Item() { Name = "Item3", Category = outofStockCategory }
);

可能吧,但我不想,因为那时我必须添加一个Categories DbSet,而现在我没有它。我仍然可以做,只是问问是否还有其他可能。@DennisvanderStelt更新的答案有帮助吗?“添加类别数据库集”的确切含义是什么?
public class Context : DbContext
{
    public DbSet<Item> Items { get; set; }
}