2

是否可以将其转换为仅查询数据库一次的实体框架查询?

  select max(TableADate) latestTableADate, max(TableBDate) latestTableBDate
  from
  (
      select max(a.ModifiedDate) TableADate, null TableBDate
      from TableA a

      union all

      select null, max(b.ModifiedDate)
      from TableB b
  ) data

目的是使用一条 sql 语句从多个表中获取最新的 ModifiedDate,因此 Entity Framework 不会多次访问数据库来获取数据。

我需要知道上次更新其中一个表的时间。

更新:

我结束了使用DbContext.Database.SqlQuery以下操作:

  var output = db.Database.SqlQuery<DateTime>
                  ("select data from (" +
                    "select 1 orderBy, max(ModifiedDate) data from TableA" +
                    "union all " +
                    "select 2, max(ModifiedDate) from TableB " +
                  ") temp order by orderby").ToList();


  data.TableADate = output[0];
  data.TableBDate = output[1];
4

1 回答 1

1

DbContext.Database.SqlQuery 您可以使用方法执行与您列出的查询类似的查询。您需要更改它以按某种顺序返回日期或使用out parameters

于 2013-05-30T14:15:03.770 回答