EF的通用任务方法

约翰

我想创建一个启动新任务的通用方法>创建我的数据库上下文的唯一实例(因为EF dbcontext不是线程安全的,并且我想并行执行很多任务)>通过ToList():ing枚举结果

这是我的伪代码,显然不会编译。我需要您的帮助,将其完善为正确的语法:

private Task<T> DoGenericStuff<T>(T dbContext, Func<T, bool> func)
{
    return Task.Factory.StartNew(() =>
    {
        using (var context = Activator.CreateInstance(dbContext.GetType()))
        {
            return context.func.ToList();
        }
    });
}

--

Func<SYSTEM, bool> func = x => x.SYSTEM_KEY == 123;
var task = DoGenericStuff(DbContext, func);
挂图
private Task<TResult> DoGenericStuff<TDbContext, TResult>(Func<TDbContext, TResult> func) where TDbContext : DbContext, new()
{
    return Task.Factory.StartNew(() =>
    {
        using (var context = new TDbContext())
        {
            return func(context);
        }
    });
}

使用以下命令执行:

var task = DoGenericStuff<MyDbContext, bool>(context => context.Set<MyEntity>().Any());

该函数接受带有单个参数a的委托,DbContext并可以返回任意值。DbContext在函数调用的通用参数中指定的类型如果要.ToList()得到结果,请在lambda中执行该操作。该代码(按照您的伪代码)要求DbContext具有无参数构造函数。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章