如何使用RIA服务将SQL查询转换为LINQ
本文关键字:查询 转换 LINQ SQL 何使用 RIA 服务 | 更新日期: 2023-09-27 18:02:46
我从一个SQL查询开始,选择一个视图&如下所示:
SET @id = ...
SET @variableDate = ...
SELECT Id,
dbo.fnGreaterDateTime(ViewDate,@variableDate) AS GreaterDate,
FROM vwExample
WHERE Id = @id
SQL函数fnGreaterDateTime
如您所期望的那样工作,返回传入的两个值中较大的一个。
在使用EF &时,我在将此转换为LINQ查询时遇到麻烦;RIA服务。在我的域服务中,我希望能够做以下事情:
public IQueryable<ExampleViewResult> GetExampleViewResults(int id, DateTime variableDate)
{
var query = from r in this.ObjectContext.ExampleViewResults
where r.Id == id
select new ExampleViewResult
{
Id = r.Id,
ViewDate = (r.ViewDate > variableDate) ? r.ViewDate : variableDate
}
return query;
}
但是当我调用这个方法时,我收到一个错误,说"实体或复杂类型ExampleViewResult不能在LINQ到实体查询中构造"。
我试着在这个线程中遵循一些建议,但是当我有域服务方法返回dto列表时,自动代码生成不包括在我的域上下文中使用的方法。
任何想法?
见此题
实体不能在LINQ to Entities查询中构造
你只需要投射到一个匿名类型或者DTO