2013-05-30 84 views
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 

這樣做的目的是讓來自多個表的最新ModifiedDate一個SQL語句,從而實體框架是沒有做多次往返數據庫來獲取數據。

我需要知道上次更新其中一個表的時間。

更新:

我使用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]; 
+0

不知道你是否可以用EF來做到這一點,但你可以通過在數據庫中創建一個'view'來完成它 – paul

+0

是的,我在想,但我想看看我的選擇是什麼,看看不同方法的一些優缺點。 – SBurris

回答

1

您可以執行類似你使用DbContext.Database.SqlQuerymethod列出的查詢。您需要將其更改爲以某種順序返回日期或使用out parameters

相關問題