添加/更新很多行在1调用实体框架

本文关键字:调用 实体 框架 更新 添加 | 更新日期: 2023-09-27 18:18:09

我写了一些代码,应该检查一行是否已经存在,如果不存在则添加它,如果存在则添加它。然后调用SaveChanges()函数。我只是想知道我这样做是否正确。

这是我的代码。

using (var ctx = _context)
    {
        foreach (var item in objects)
        {
            Object existingRow = ctx.Objects.Where(x => x.Id == item.Id).FirstOrDefault();
            if (existingRow != null)
                existingRow = item;
            else
                ctx.Objects.Add(item);
        }
        ctx.SaveChanges();
    }

_context my context to database.

这样做正确吗?执行SaveChanges()真的只导致1调用,即使我添加了很多对象到上下文中?

Objects是一个可以包含1000多个对象的列表。

提前感谢您的帮助!

添加/更新很多行在1调用实体框架

是的,你应该这样做。EF的具体方式取决于内部算法,但它们通常都是格式化好的。

如果你想知道它是如何做到的或者你想改变EF做某事的方式你应该使用拦截