我用 wcf data service 加EF
我做分页的时候 想 每页取10条 然后 把数据总数也取出来 问题一 有没有办法直接 返回一个int 就是数据总数 实在没有办法 返回一个 只查询 ID的对象的实体 或者 IQueryable<int>也行 问题二 当查询的时候 p.EmployeeId.StartsWith(Query.EmployeeId) 如果Query.EmployeeId为空 那就是查询了所有数据 但这样 他也会匹配数据库吧 这样效率是不是很低下 有没有 当他为空 或null 时 不查询的方法 其他字段也是 问题三 p.ContractDate >= Query.StartDate && p.ContractDate <= Query.OverDate 这几个参数都是日期类型 现在的问题是 当实体 Query.StartDate 的值为空或NULL时 会报错 有没有办法 让他们为空时 不查询此条件 问题四 还有 p.ContractDate >= Query.StartDate && p.ContractDate <= Query.OverDate 这个写法 有点麻烦 有简便的写法吗 DataServiceCollection<ZX_Elevator> Entities = new DataServiceCollection<ZX_Elevator>(); |
1、DomainService 要重载Count方法
public class DailyOfficeService : DomainService
{
DailyOfficeContext queryContent;
public DailyOfficeService()
{
queryContent = new DailyOfficeContext();
}
protected override int Count<T>(IQueryable<T> query)
{
return query.Count();
}
2、EntityQuery<V_MAIL_MANAGE> query = _content.GetMailInfosQuery(userID);
查询条件开启返回总数 query.IncludeTotalCount = true;
以上2点解决你第一问题
下面几个问题都可以通过 判断解决 列如:
EntityQuery<V_MAIL_MANAGE> query = _content.GetMailInfosQuery(userID);
if (!folderID.IsNullOrEmpty())
{
query = query.Where(d => d.FOLDER_ID == folderID);
}
if (isMustRead != null)
{
query = query.Where(d => d.IS_MUST_READ == isMustRead);
}
if (!key.IsNullOrEmpty())
{
query = query.Where(d => d.THEME.Contains(key) || d.SEND_USER.Contains(key) || d.SEND_DEPT.Contains(key));
}
if (!theme.IsNullOrEmpty())
{
query = query.Where(d => d.THEME.Contains(theme));
}
if (!sendDept.IsNullOrEmpty())
{
query = query.Where(d => d.SEND_DEPT.Contains(sendDept));
}