MCa*_*der 2 c# entity-framework data-access-layer
我正在尝试重新设计最初使用Raptier构建的数据访问层.Raptier生成接受where子句作为参数传递给存储过程的方法.我真的需要保留现有的mesthos签名,所以我的新DAL也需要接受where子句.我想使用更新的数据访问技术和技术,因此考虑使用.Net 4.0中的Entity Framework.
但是,看起来我不能接受动态where子句而不实现一些强烈的reoutines来将它们解析为lamba表达式.有没有我错过的东西?我是否对实体框架不满意?
谢谢,马克
想到两个想法.
1).动态LINQ,允许您将运算符定义为字符串.
var result = Northwind.Products
.Where("CategoryId=2 And UnitPrice>3")
.OrderBy("SupplierId");
Run Code Online (Sandbox Code Playgroud)
2).使用某些东西EntityFilter<T>(参见此处的代码),它允许您定义这样的过滤器:
IEntityFilter<Person> entityFilter =
from person in EntityFilter<Person>.AsQueryable()
where person.Name.StartsWith("a")
where person.Id < 100
select person;
Run Code Online (Sandbox Code Playgroud)
您可以提供IEntityFilter<Person>能够过滤该查询的业务方法:
public static Person[] GetAllPersons(
IEntityFilter<Person> filter)
{
using (var db = ContextFactory.CreateContext())
{
IQueryable<Person> filteredList =
filter.Filter(db.Persons);
return filteredList.ToArray();
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5632 次 |
| 最近记录: |