2013-06-21 52 views
4

我想通過使用實體框架在sql服務器中創建臨時表。有什麼辦法可以做到這一點?如果我可以創建一個臨時表,那麼我的下一個問題是,我該如何讀取它?使用實體框架創建臨時表

在此先感謝。

安德烈

+0

可能還有其他方法,但是您可以通過創建存儲過程並將其鏈接到模型來完成您的要求。 – Andrew

+1

是的,我知道這種方式,但我不太喜歡它。 – Andre

+0

我處理這種情況的方式是使用存儲過程與SQL Server表變量。根據您的需求/情況構建視圖也可能是一個選項。但是,基本上,臨時表和表變量在數據庫中的工作效果最好,而不是試圖迫使一個方形釘進入圓孔。 – jfrankcarr

回答

1

好了,你不喜歡存儲過程的路線....我也不是誠實的,但它是我能想到這樣做的最快方式。

基於此,我不知道EDM中有什麼簡單的方法來創建臨時表,所以我的下一個建議是創建本地對象,它模擬您想要創建的臨時表。臨時名稱顯然表明您不希望它們無限期地駐留在數據庫中,因此在內存對象中使用具有比對數據庫多次調用更加可控和更快(取決於您的延遲)的好處。

public class MyTempTable 
{ 
    public string ID { get; set; } 
    public string Column1 { get; set; } 
    // your other columns here 
} 

List<MyTempTable> tempTable = new List<MyTempTable>(); 

一旦你創建了對象列表,你基本上可以使用Linq在數據庫表上做的任何事情。

+2

我想用臨時表在其他一些sql語句中加入它,所以在內存對象中沒有選擇。 – Andre

+0

你可以做一點點黑客.... http://stackoverflow.com/questions/9165288/trying-to-join-a-list-and-a-sql-table-using-linq-contains-method -still-giving-lo – Andrew

+1

@Andrew - Contains方法工作得很好,特別是對於較小數量的數據,例如查找表或日期有限的範圍。我確實對構建大量數據的巨大IN子句有一些擔憂。 – jfrankcarr