gpt4 book ai didi

c# - 实现异步 Entity Framework 存储库的正确方法

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

我最近阅读了很多关于 Entity Framework 异步的内容,并且正在寻找将我的存储库更改为异步版本的正确方法。它们现在大致如下所示:

public class MyRepo
{
private DbContext _context;

public MyRepo()
{
_context = new DbContext();
}

public int DoSomeStuff(int id)
{
var item = _context.MyModels.Where(x => x.Id == id).SingleOrDefault();
item.MyProperty = "abcd";
return _context.SaveChanges();
}
}

调用此存储库的示例:

var myRepo = new MyRepo();
myRepo.DoSomeStuff(1);
myRepo.DoSomeStuff(2);

我可以将 DoSomeStuff 函数更改为:

public async Task<int> DoSomeStuffAsync(int id)
{
var item = await _context.MyModels.Where(x => x.Id == id).SingleOrDefaultAsync();
item.MyProperty = "abcd";
return await _context.SaveChangesAsync();
}

或者这是处理 DbContext 实例的错误方式,应该是:

public async Task<int> DoSomeStuffAsync(int id)
{
using(var db = new DbContext())
{
// ...
}
}

最佳答案

您可以采用任何一种方式,具体取决于您想要的语义。如果您使用的是共享的 DbContext,您只需对其进行记录,以便您的调用者一次只会调用一个异步方法。

关于c# - 实现异步 Entity Framework 存储库的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26625946/

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