Entity framework 对抽象为存储库类的实体执行查询
我有一个VisualStudio2008C#.NET3.5项目,它使用了用于MySQL v6.4.4的ADO.NET驱动程序 我当前有一个对我的存储库的查询,如下所示: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
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的存储库层吗?