0
A
回答
1
Repository模式和LINQ到SQL將不匹配。抱歉。
恕我直言,幾乎所有的I-hide-data-storage-from-u模式都以某種方式被破壞。要麼你有抽象漏洞,要麼需要大量的冗餘代碼。
想象一下...你有一個IRepository,它使用Linq to Sql生成一個匹配Foo數據庫表的Foo類型。真棒!一切都比我預期的更好。
除了Foo表格鏈接到條形表。所以,現在當你通過Foo的IRepository接口返回所有的Foos時,你必須保持你的DataContext活着,這樣如果有人去foreach(var bar in Foo.Bars)
他們會得到他們期望的。
但是,您如何管理DataContext?你是否爲IRepository的所有實例或每個實例保留一個?當一個Bar被創建,一個新的Foo被添加到它並保存到IRepository時會發生什麼?你已經添加了一個沒有Foo存儲庫的Foo!而且情況會變得更糟,因爲不使用L2S模式的副作用會從IRepository中正常蔓延。
因此,您嘗試在您的IRepository實現中限定您的L2S類型,將您手動編碼的新類型中的所有數據進行復制。但是,你如何處理一對多和多對多的關係呢?將它全部加載到內存中,或者一塊一塊加載,確保你失去了對數據庫進行高效查詢的任何方式?
整個掛件事情令人沮喪。能夠隱藏你實際上並沒有將你的數據存儲在數據庫中的事實將是一件很美妙的事情,但除非你很幸運(即你的設計很簡單),否則你將無法脫身用它。
2
相關問題
- 1. LINQ to SQL和存儲庫模式
- 2. SQL Server存儲過程和Linq-to-SQL
- 3. 如何使用Linq to SQL檢索存儲過程模式?
- 4. LINQ to SQL:存儲過程結果
- 5. LINQ to SQL - 嵌套存儲過程
- 6. F#Linq to sql - 調用存儲過程
- 7. ASP.Net MVC3 - Linq to SQL或存儲過程?
- 8. 一個使用存儲庫模式的Linq To SQL的DataContext
- 9. Linq to SQL的存儲庫模式:多對多關係
- 10. 的LINQ to SQL存儲庫模式和字符串ID
- 11. LINQ to SQL存儲庫 - 緩存數據
- 12. LINQ to SQL存儲庫模式自動增量問題
- 13. Linq to Sql - 如何使用存儲庫模式更新對象?
- 14. 使用Linq-to-SQL,IOC和存儲庫模式預取數據
- 15. 存儲庫模式和Linq到sql
- 16. LINQ to SQL調用使用動態SQL的存儲過程
- 17. 存儲庫模式和存儲過程
- 18. 使用LINQ to SQL而不生成模型的存儲庫模式
- 19. 在SQL Server存儲過程中使用LINQ to SQL結果
- 20. LINQ to sql在ms sql 2005中製作存儲過程嗎?
- 21. Linq to SQL使用存儲庫模式:對象沒有支持轉換到SQL
- 22. 用存儲過程LINQ to DATASET更新
- 23. LINQ to Entities而不是存儲過程?
- 24. 的LINQ to SQL自動生成類型的存儲過程
- 25. 增加LINQ to SQL存儲過程調用的超時時間
- 26. 獲取更多存儲過程的返回值(Linq to SQL)
- 27. 的LINQ to SQL和存儲過程返回類型
- 28. LINQ to SQL - 無法修改存儲過程的返回類型
- 29. 使用LINQ to SQL返回MSSQL存儲過程中的uniqueidentifier
- 30. Linq to SQL使用IoC,依賴注入,工作單元的存儲庫模式
Will:我的數據庫設計非常複雜,我不會在我的L2S中使用任何表格,而是我將使用Stored Procdure(選擇,插入,更新,刪除)。 那麼這仍然是一個問題? – 2010-02-17 18:08:26
@nisa SP仍然返回L2S實體......根據數據庫的回程如何工作,處理起來可能會更容易一些。我強烈建議將一個小型原型與一些表和存儲過程一起打包。祝你好運。 – Will 2010-02-17 21:23:43
我同意。沒有任何抽象可以解決破壞的數據庫設計問題。因爲有很多關係的數據庫就是這樣。破碎。當應用程序處理數據時,不需要使用複雜的關係。至少在你測試你的應用程序時不會。但是像存儲庫模式這樣的模式確實有用。如果你完全實現它們,而不僅僅是一些漏洞抽象(這是完全沒用的) – jgauffin 2013-01-13 16:35:11