向数据库添加一系列条目

时间:2016-06-07 00:50:51

标签: c# asp.net-mvc

现在我这样做是为了把一些东西放在我的数据库里。

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函数,但我没有让它工作。

如何一次轻松添加多个条目?

谢谢。

1 个答案:

答案 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一次性添加它们,就像您预期的那样。