Есть ли способ сохранить один объект с помощью Entity Framework Core, если уже есть измененные объекты, которые он отслеживает?

Используя Entity Framework Core, я собираю объекты для сохранения. Во время этого пакетного процесса я хочу явно создать новый объект и не хочу, чтобы другие объекты еще создавались.

public void Generate()
{
    DbContext context = GetDbContext();
    context.Add(new MyUser());
    context.Add(new MyUser());
    DoSomethingElse(context);
    context.SaveChanges();
}

public void DoSomethingElse(DbContext context)
{
    var something = new Something();
    // add new object and save only this new object
}

Есть ли способ сохранить something без сохранения двух User объекты?

Я думал об использовании нового экземпляра DbContext, это будет стоить много времени для создания экземпляра?

1 ответ

Решение

Если DoSomethingElse не зависит от предыдущих действий, тогда рассмотрите возможность разделения на отдельные единицы работы.

Например

public void Generate() {
    DbContext context = GetDbContext();
    DoSomething(context);
    DoSomethingElse(context);
}

public void DoSomething(DbContext context) {
    var something = new Something();

    // add new object and save only this new object

    context.SaveChanges();
}

public void DoSomethingElse(DbContext context) {
    context.Add(new MyUser());
    context.Add(new MyUser());    
    context.SaveChanges();
}
Другие вопросы по тегам