Entity framework 对抽象为存储库类的实体执行查询

Entity framework 对抽象为存储库类的实体执行查询,entity-framework,Entity Framework,我有一个VisualStudio2008C#.NET3.5项目,它使用了用于MySQL v6.4.4的ADO.NET驱动程序 我当前有一个对我的存储库的查询,如下所示: TaskEntities repository = /* derived from global::System.Data.Objects.ObjectContext */ var task_query = from task in repository.TaskSet from tc in

我有一个VisualStudio2008C#.NET3.5项目,它使用了用于MySQL v6.4.4的ADO.NET驱动程序

我当前有一个对我的存储库的查询,如下所示:

TaskEntities repository = /* derived from global::System.Data.Objects.ObjectContext */

var task_query = from task in repository.TaskSet
                 from tc in task.TestCases
                 where tc.Status.Count == 0
                 orderby task.Order
                 select task;

foreach (Task task in task_query.ToList())
{
    // do useful stuff...
}
public class Repository : IDisposable
{
    private TaskEntites repository_;

    // ...

    // is this remotely correct?
    public Task[] Query(System.Linq.Expressions.Expression<Func<Task, bool>> query)
    {
        return repository_.TaskSet.Where(query).ToArray();
    }
}

Repository repository;
var task_query = repository.Query( ??? );

foreach (Task task in task_query)
{
    // do useful stuff ....
}
这很好,但我需要能够抽象出数据库访问。因此,我想用仍然允许查询的
存储库
类替换
任务实体
。大概是这样的:

TaskEntities repository = /* derived from global::System.Data.Objects.ObjectContext */

var task_query = from task in repository.TaskSet
                 from tc in task.TestCases
                 where tc.Status.Count == 0
                 orderby task.Order
                 select task;

foreach (Task task in task_query.ToList())
{
    // do useful stuff...
}
public class Repository : IDisposable
{
    private TaskEntites repository_;

    // ...

    // is this remotely correct?
    public Task[] Query(System.Linq.Expressions.Expression<Func<Task, bool>> query)
    {
        return repository_.TaskSet.Where(query).ToArray();
    }
}

Repository repository;
var task_query = repository.Query( ??? );

foreach (Task task in task_query)
{
    // do useful stuff ....
}
公共类存储库:IDisposable
{
私有TaskEntites存储库;
// ...
//这一点正确吗?
公共任务[]查询(System.Linq.Expressions.Expression查询)
{
返回repository.TaskSet.Where(query.ToArray();
}
}
储存库;
var task_query=repository.query(??);
foreach(任务查询中的任务)
{
//做有用的事。。。。
}

要通过
存储库
类查询数据库,我需要做什么。是否应
Query()
接受
Linq.Expressions.Expression
对象?如何创建?

有很多教程介绍了如何创建存储库层。您特别推荐一个不需要EF4或.NET 4的存储库层吗?