簡體   English   中英

如果我的所有sql server數據庫訪問都是通過存儲過程完成的

[英]If all my sql server database access is done thru stored procedures

如果我的所有sql server數據庫訪問都是通過存儲過程完成的,並且我計划繼續這種做法,那么使用linq2sql和/或實體框架為未來的項目提供一個不必要的復雜層,它不會增加太多價值?

相關問題:微軟是否試圖引導開發人員遠離依賴存儲過程來進行數據訪問?

LINQ2SQL在能夠輕松地將數據庫實體映射到代碼中的類並使用本機語言結構輕松處理這些類方面增加了很多價值。 如果需要,可以輕松地將生成的實體類的CRUD操作映射到存儲過程。 我發現有些東西不再需要存儲過程來輕松工作,所以我已經不再使用它們了,但是你不會被迫。 基本上LINQ2SQL可以做的就是替換你的DAL(如果不是全部的話)很多,這樣你就不必編寫這段代碼了。

我使用Linq2sql來調用我的存儲過程也是因為它生成.net代碼的速度非常快,我可以從我的應用程序中調用,它只需拖放,基本上只需幾秒鍾即可完成。 我仍然認為你需要問問自己維護這些存儲過程花了多少時間。 如果你這樣做,你會節省很多時間使用linq2sql做你的crud調用。 我只在數據庫上執行多步操作時才使用sprocs。

LINQ-to-SQL支持將大量操作(包括CRUD)映射到存儲過程,但是你失去了可組合性 - 即你不能只添加(exp).Where(x=>x.IsActive) 一種選擇是表值函數(UDF)代替查詢數據的存儲過程; 這也提出了一個更嚴格的元模型(而不是SET FMT_ONLY ON ,這是hit'n'miss)。

這樣,您的查詢方法可以在數據庫中組合; 但請注意,即使LINQ-to-SQL確實存在,Entity Framework 也不支持此功能。

只是為了解決您的相關問題:使用存儲過程的好處並不像以前那么突出。 雖然我不會說存儲過程是邪惡的,正如一些人在過去所說的那樣( http://www.tonymarston.net/php-mysql/stored-procedures-are-evil.html-這是一個非常雖然好文章,但我會說,動態sql的使用,只要它以一種定義良好的結構化方式完成,這些天是完全可以接受的。

我不是微軟試圖引導開發人員使用存儲過程,但動態sql應被視為可接受的選擇。

你失去了編寫Linq查詢的能力,這是linq-to-sql的最佳部分。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM