asp.net – 使用EF Projection的RIA Services DomainService查询
这是一个有趣的问题,我希望有人可以伸出援助之手.
我有一个DomainService类,其中包含以下查询: [Query] public IEnumerable<BatchResult> GetBatchResults(int batchId) { return ObjectContext.BatchQueries .Include("BatchTCResults") .Include("BatchANFResults") .Where(x => x.BatchId == batchId) .Where(x => x.BatchTCResults.Any() || x.BatchANFResults.Any()) .ToArray() // enumerate because projection calls a method that EF will poop it's pants on .Select(x => new BatchResult { BatchQueryId = x.Id,Route = x.Routing,Account = x.Account,Amount = x.Amount,CheckNumber = x.CheckNumber,Severity = BatchResult.DetermineOverallSeverity(x) }); } 这工作但是我真的需要从Silverlight客户端传递的分页/排序信息在枚举发生在调用行中之前应用.ToArray() 客户端使用DomainDataSource Silverlight控件. 我怎样才能做到这一点? 解决方法
最简单的方法是在方法参数列表中添加分页/排序/过滤参数,并在服务方法中将相应的LINQ查询运算符添加到数据上下文查询中.但是,在这种情况下,您将放弃客户端IQueryable功能.我的意思是,客户端的查询只会到达应用程序服务器,但不会到达数据库.而且你需要DomainContext和UI之间的一些层:DomainDataSource不太可能工作.
使用AsQueryable()将查询结果公开为IQueryable将无济于事,因为表达式树将无条件地编译为代码以执行LINQ-to-Objects运算符. 有点困难的选择是在第一种情况下使用参数,同时在客户端查询对象上编写自己的IQueryable包装器.此包装器将从查询表达式中提取参数,并将它们作为方法参数传递给服务.好吧,如果我有足够的业余时间,我只会尝试这个. 另一个困难的方法是在服务器端做类似的事情.可以获取一个IQueryable对象,该对象具有从DomainService中的客户端传递的表达式树.您需要覆盖DomainService.Query方法.然后,您将能够提取与分页/排序相关的部分查询表达式,将其保存到字段,然后应用于数据库查询.但是,Query方法对于给定DomainService中的所有方法都是单一的.因此,您可能会以一个大表方法结束,该方法决定如何为每个服务查询方法执行操作.不用说,服务将变得非常困难. 最后,我强烈建议您选择第一个选项. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc – ASP.NET MVC – Html.Textbox()throws“对象
- asp.net – .NET中的堆栈溢出将IIS发送到100%的CPU使用率
- ASP.NET:这个HttpModule有什么作用? System.ServiceModel
- asp.net-core – project.json版本控制格式
- asp.net-mvc – 怎么样?控制器返回任何/当前视图
- 对象Equals相等性比较的通用实现
- asp.net – StaticSelectedStyle-CssClass不工作
- asp.net-mvc-3 – Azure服务总线 – 双向通信性能挑战
- kendo-ui – 剑道多选控制 – 从下拉列表中删除所选项目
- asp.net-mvc – 具有Fluent nHibernate和Ninject的多租户.每
- asp.net – 有没有比升级到Visual Studio 2010 U
- asp.net – 具有一个无效的SelectedValue,因为它
- asp.net :( c#client-side)如何访问页面加载后创
- ASP.NET DataTable与Json互转源码
- 获取ASP.Net中的当前应用程序虚拟路径
- ASP.NET Core中间件实现分布式 Session
- asp.net-mvc – Asp .Net Core – 无法安装Micro
- ASP.NET – meta:ResourceKey vs <%$Resources
- asp.net – App Settings和connectionStrings配置
- asp.net – SqlConnection localhost用户名失败