2010-06-07 54 views
1

HI,性能上加入在LINQ

我打算在LINQ重寫一個存儲過程。

這個sp正在做的是連接12個表並獲取數據並將其插入到另一個表中。

它有7個左外連接和4個內連接。並返回一行數據。

現在的問題。 1)在linq中實現這個連接的最好方法是什麼? 2)你認爲這會影響性能嗎(它只能在給定的時間點檢索一行數據)

請指教。

謝謝 SNA。

+0

您使用哪種O/RM工具? LINQ to SQL? – Steven 2010-06-07 06:51:54

+0

我不會在LINQ中重寫存儲過程,除非您有充分理由這麼做 – BlackTigerX 2012-05-22 14:40:36

回答

0

您可能想要檢查this question多個連接。我通常更喜歡lambda語法,但是YMMV。

至於性能:我懷疑查詢性能本身會受到影響,但在計算執行計劃時可能會有一些開銷,因爲它是如此複雜的查詢。
性能最大的命中可能是與存儲過程相比,您需要額外的數據庫往返行程。如果我理解正確,您當前的SP會一次完成SELECT和INSERT。使用LINQ to SQL或LINQ to Entities,您需要首先獲取數據,然後才能將其寫入其他表格。

因此,這取決於您的使用情況,如果重寫是有保證的。或者,您可以將存儲過程添加到您的數據模型。它將作爲數據上下文的一種方法公開。