我有简单的实体:
public class Hall
{
[Key]
public int Id {get; set;}
public string Name [get; set;}
}
然后在Seed
我AddOrUpdate
用来填充表格的方法中:
var hall1 = new Hall { Name = "French" };
var hall2 = new Hall { Name = "German" };
var hall3 = new Hall { Name = "Japanese" };
context.Halls.AddOrUpdate(
h => h.Name,
hall1,
hall2,
hall3
);
然后我在包管理控制台中运行:
Add-Migration Current
Update-Database
一切都很好:我在“Hall”表中有三行。但是如果我再次在包管理控制台中运行,Update-Database
我已经有五行了:
Id Name
1 French
2 Japaneese
3 German
4 French
5 Japanese
为什么?我认为应该是三排,而不是五排。我尝试使用Id
属性而不是,Name
但它没有任何区别。
更新:
此代码产生相同的结果:
var hall1 = new Hall { Id = 1, Name = "French" };
var hall2 = new Hall { Id = 2, Name = "German" };
var hall3 = new Hall { Id = 3, Name = "Japanese" };
context.Halls.AddOrUpdate(
h => h.Id,
hall1);
context.Halls.AddOrUpdate(
h => h.Id,
hall2);
context.Halls.AddOrUpdate(
h => h.Id,
hall3);
我还通过 nuget 安装了最新的 EntityFramework。