выполнение запроса к сущности, абстрагированной к классу репозитория - PullRequest
0 голосов
/ 09 марта 2012

У меня есть проект Visual Studio 2008 C # .NET 3.5, использующий драйвер ADO.Net для MySQL v6.4.4.

В настоящее время у меня есть запрос к моему хранилищу, который выглядит следующим образом:

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...
}

Это отлично работает, но мне нужно иметь возможность абстрагироваться от доступа к базе данных. Итак, я хочу заменить TaskEntities классом Repository, который по-прежнему разрешает запросы. Примерно так:

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 ....
}

Что мне нужно сделать, чтобы иметь возможность запрашивать базу данных через класс Repository. Должен ли Query() принять Linq.Expressions.Expression объект? Как?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...