これを、データベースに対して 1 回だけクエリを実行するエンティティ フレームワーク クエリに変換することは可能ですか?
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
目的は、1 つの SQL ステートメントで複数のテーブルから最新の ModifiedDate を取得することです。そのため、Entity Framework はデータを取得するためにデータベースへの複数のトリップを実行しません。
テーブルの 1 つが最後に更新されたのはいつかを知る必要があります。
アップデート:
私は次のことを使用して終了し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];