【发布时间】:2019-07-09 06:29:22
【问题描述】:
我想知道这段代码有什么问题?会不会导致多个请求同时出现一些错误,在controller web api中调用这个方法?
public async Task<T> AddAsync(T entity)
{
_dbContext.Set<T>().Add(entity);
await _dbContext.SaveChangesAsync();
return entity;
}
【问题讨论】:
-
你已经在传递实体,所以你有对象引用,我认为当对象引用不变时你不需要返回它。
-
public async Task<T> AddAsync(T entity)- 这看起来像存储库模式。如果您使用的是实体框架,那么您不应该使用存储库(反)模式!见这里:softwareengineering.stackexchange.com/questions/180851/… -
_dbContext是一个具有较长生命周期的静态字段,还是一个短期对象,其持续时间不会超过相关的传入 HTTP 请求? -
这对于 stackoverflow 来说不是一个好问题,但是我认为“不要使用存储库而不是 EF 情绪”,在我看来,这是唯一的问题代码自动取款机。你也正在缓存你的 DbContext,谁知道多长时间
-
短一点也没有错,但是打开的时间越长,出现连接错误和其他异常的可能性就越大
标签: c# entity-framework asynchronous repository-pattern savechanges