2016-05-11 62 views
0

我有一個數據庫包含多個表和一些存儲過程,它們查詢是否從各個表中獲取特定數據以顯示所需的信息。 找到波紋管的存儲過程的一個例子:實體框架 - 如何查詢多個表並選擇要顯示的列

SELECT DISTINCT    
    ROW_NUMBER() OVER (ORDER BY dbo.[table1].ReportedDate DESC) AS rowNumber, 
    dbo.[table1].[id], 
    dbo.[table1].caseReference, 
    dbo.[table2].organisationName AS customerName, 
    dbo.[table3].assetRegistration, 
    dbo.[table4].surname 
FROM dbo.[table1] WITH (NOLOCK) 
LEFT JOIN dbo.[table2] with (NOLOCK) 
ON   dbo.[table2].JobId = dbo.[table1].[id] 
LEFT JOIN dbo.[table3] WITH (NOLOCK) 
ON   dbo.[table3].id = dbo.[table2].[JobServiceId] 
LEFT JOIN dbo.[table4] WITH (NOLOCK) 
ON   dbo.[table4].[jobID] = dbo.[table1].[id] 
WHERE (table1.caseReference LIKE @caseReference+'%') 

我想從使用這些存儲過程移動到使用實體框架更多的代碼爲基礎的方法。如何使用Linq查詢重新映射到數據庫的dbContext類來重新創建類似上面的查詢?

我在確定如何選擇我想要從每個表返回的數據以及如何將它們放在一起時遇到問題。

+0

在未來最佳的性能和易於維護,我寧願使用複雜的邏輯 – techspider

+0

存儲過程我傾向於採取讓EF寫的方法對於我來說SQL(基本的ORM使用場景),但是當它生成的SQL效率低下時,創建我自己的存儲過程。上面的例子將是一個例子,我將在EF生成的SQL上使用存儲過程。 – mtm927

+0

@techspider關於性能,這將提供更好的結果,使用這種查詢或存儲過程的實體框架,請記住,上面的例子是正在使用的那個的減少版本 –

回答