gpt4 book ai didi

c# - Entity Framework SaveChanges 有多贵?自动保存与显式 [context.SaveChanges on Dispose]

转载 作者:太空宇宙 更新时间:2023-11-03 15:02:53 32 4
gpt4 key购买 nike

我一直想知道的一个问题是,我应该显式调用 context.SaveChanges() 还是让它在 Dispose() 下。

方法 1:自动保存

    public virtual void Dispose()
{
context.SaveChanges();
context.Dispose();
}

假设我们将用户添加到 UserRepository(或使用依赖注入(inject))

  using (var repo = new UserRepository())
{
repo.Add(user);
}

方法 2:显式保存

    public virtual void SaveChanges()
{
context.SaveChanges();
}

public virtual void Dispose()
{
context.Dispose();
}

假设我们将用户添加到 UserRepository(或使用依赖注入(inject))

  using (var repo = new UserRepository())
{
repo.Add(user);
repo.SaveChanges();
}

所以我的问题是:Auto-Save 生成更清晰的代码,但操作的开销有多大?哪种方法更好?

最佳答案

我不知道细节,但我怀疑你是否想在执行只读查询时调用 SaveChanges,例如,你所显示的将调用 SaveChanges 在所有情况下。

我确实写了类似的东西,这样我就可以快速轻松地写入数据库,但是你不应该将 SaveChanges 混入 Dispose 方法本身,那绝对不好。

public static void UseAndSave(
Action<Context> pAction
) {
using (var context = new Context()) {
pAction(context);
context.SaveChanges();
}
}

...

Context.UseAndSave(context => context.Users.Add(user));

(也可以写一个带有Func的版本)

关于c# - Entity Framework SaveChanges 有多贵?自动保存与显式 [context.SaveChanges on Dispose],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45269108/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com