我有一个Visual Studio 2008 C#.NET 3.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...
}
这很好用,但我需要能够抽象出数据库访问。因此,我想将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
个对象吗?怎么样?