gpt4 book ai didi

c# - ObjectContext的 Entity Framework 和线程安全

转载 作者:太空狗 更新时间:2023-10-29 23:14:33 24 4
gpt4 key购买 nike

假设我们有一个包含一些实体的 ObjectContext(通过 Entity Framework EDMX)。从单个线程从数据库完全加载的实体。只有在加载实体后,我们才会启动一些线程,这些线程只会从实体中读取数据,并且不会对数据库进行查询。它是线程安全操作吗?

最佳答案

是的,您可能还想考虑在您的 ObjectSet 上使用 .AsNoTracking() 来从您的上下文中删除任何 EF Hook ,以确保您只是像您提到的那样执行读取操作。使用 .AsNoTracking() 的一个额外好处是它还会带来非常小的性能提升

这是一个如何在提供程序中执行此操作的示例:

    public class Provider<TEntity> where TEntity : class
{
protected IObjectSet<TEntity> _dbSet;
protected ObjectContext _context;

public Provider(ObjectContext context)
{
_context = context;
_dbSet = context.CreateObjectSet<TEntity>();
}

public virtual IEnumerable<TEntity> FindReadOnly(Expression<Func<TEntity, bool>> whereClause= null)
{
IQueryable<TEntity> dbSet = _dbSet.AsNoTracking();

if (whereClause!= null)
dbSet = dbSet.AsExpandable().Where(whereClause);

return dbSet;
}
}

关于c# - ObjectContext的 Entity Framework 和线程安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25164259/

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