如果你正在使用Linq to Ado。NET数据服务或WCF数据服务,您的模型将为您构建大量类型。一般来说,虽然你会选择和过滤。你需要以下内容,那么你所有的方法都只是锦上添花:
查询类型1-一个筛选器,返回列表:
public void makeQuery<T>(string entity, Expression<Func<T, bool>> filter, Action<List<T>> callback)
{
IQueryable<T> query = plussContext.CreateQuery<T>(entity).Where(filter);
var DSQuery = (DataServiceQuery<T>)query;
DSQuery.BeginExecute(result =>
{
callback(DSQuery.EndExecute(result).ToList<T>());
}, null);
}
查询类型2-一个筛选器,返回单个实体:
public void makeQuery(字符串实体、表达式>过滤器、操作回调)
IQueryable<T> query = plussContext.CreateQuery<T>(entity).Where(filter);
var DSQuery = (DataServiceQuery<T>)query;
DSQuery.BeginExecute(result =>
{
callback(DSQuery.EndExecute(result).First<T>());
}, null);
}
你需要做的就是重载这些过滤器,并将过滤器替换为简单的过滤器阵列
Expression<Func<T, bool>>[] filter
对于单次和列表返回,重复此操作。
GenericQuery.Instance.Create().makeQuery<tblAgencyBranches>("tblAgencyBranches", f => f.tblAgencies.agencyID == _agency.agencyID, res => { AgenciesBranch.ItemsSource = res; });
这可能看起来很复杂,但它隐藏了很多异步魔法,在某些情况下可以直接从按钮处理程序调用。与其说这是一个三层系统,不如说它节省了大量时间。