现在我这样做是为了把一些东西放在我的数据库里。
public void AddMonsters()
{
Monster NewMonster = new Monster();
NewMonster.Level = 1;
....
NewMonster.Strength = 10;
db.Monsters.Add(NewMonster);
db.SaveChanges();
NewMonster.Level = 3;
.....
NewMonster.Strength = 197;
db.Monsters.Add(NewMonster);
db.SaveChanges();
NewMonster.Level= 30;
....
NewMonster.Strength = 275;
db.Monsters.Add(NewMonster);
db.SaveChanges();
}
每个人都必须SaveChanges
。
但我知道数据库中有一个AddRange
函数,但我没有让它工作。
如何一次轻松添加多个条目?
谢谢。
答案 0 :(得分:3)
问题是您正在重复使用相同的变量NewMonster
。如果您为每个怪物创建一个新的对象实例,则只能在最后调用db.SaveChanges()
。
你可以创建一个怪物列表,然后使用AddRange()
。
var monsters = new List<Monster>() {
new Monster { Level = 1, Strength = 10 },
new Monster { Level = 10, Strength = 105 },
};
db.Monsters.AddRange(monsters);
db.SaveChanges();
为了澄清,在上面的代码片段中,实体框架正在跟踪Monster
的一个实例 - 因此您将无法使用AddRange或无需重复调用.SaveChanges()。你实际上是在使用相同的对象,更改变量然后执行.Add和.SaveChanges。
创建指定的列表可能是解决问题的最简洁的解决方案 - 尽管您可以创建Monster
的任何集合,然后使用.AddRange一次性添加它们,就像您预期的那样。