如何使用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列表时,自动代码生成不包括在我的域上下文中使用的方法。

任何想法?

如何使用RIA服务将SQL查询转换为LINQ

见此题

实体不能在LINQ to Entities查询中构造

你只需要投射到一个匿名类型或者DTO