有没有办法使用Entity Framework Core保存单个对象,如果它已经跟踪了已更改的对象?

时间:2018-04-17 11:38:17

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

使用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 个答案:

答案 0 :(得分:2)

如果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();
}