实体框架核心AddOrUpdate项目的最佳方式

时间:2016-09-24 17:04:26

标签: c# entity-framework entity-framework-core

如果DB中存在指定Developer的记录,我想更新DeveloperName实体,否则我需要添加一个新项目。现在我就像在下面的代码中那样,但这是2查询方式。还有更好的方法吗?

   public static async Task AddOrUpdateDevAsync(Developer newD)
        {
            using (var db = new RPDBContext())
            {
                var oldD =
                    await
                        db.Developer.AsNoTracking()
                            .FirstOrDefaultAsync(
                                x =>
                                    string.Equals(x.DeveloperName, newD.DeveloperName,
                                        StringComparison.OrdinalIgnoreCase));
                if (oldD != null)
                {
                    Mapper.Map(newD, oldD);
                    db.Developer.Update(oldD);
                }
                else
                {
                    db.Developer.Add(newD);
                }
                await db.SaveChangesAsync();
            }
        }

0 个答案:

没有答案