2009-08-02 77 views
5

我想學習Asp.net Mvc,所以我嘗試了 this教程。Asp.net Mvc:使用LINQ to SQL創建模型類

他們討論了Repository模式,以及如何輕鬆地轉換爲另一種數據訪問技術,而不是直接調用Linq to Sql。

在控制器類中使用LINQ to SQL使得將來很難切換數據訪問技術。例如,您可能決定從使用Microsoft LINQ切換到SQL以將Microsoft Entity Framework用作數據訪問技術。在這種情況下,您需要重寫每個訪問應用程序內數據庫的控制器。

注意:在閱讀本教程之前,我從來沒有真正理解接口是如何工作的,但它仍然不是100%清晰。我現在將它看作某種類的「模板」。

成功使用Linq to Sql後,我認爲試試Ado.net Entity Framework會很好,因爲我已經閱讀了很多關於這方面的內容。他們說使用Repository模式可以很容易地切換,所以我想我會測試它。

我的問題是:我應該怎麼做才能更改爲Ado.net EF?

這是我認爲我應該做的。

  • 添加Movie.edmx文件,並配置它(加我的電影表)。
  • 編寫基於該IMovieRepository一個新的類,也許稱之爲MovieEFRepository。
  • 將控制器構造函數中的參數更改爲MovieEFRepository。這是我發現的第一件奇怪的事情,因爲在本教程中他們說如果您更改爲其他數據源,則不使用存儲庫會強制您更改所有控制器。無論如何,我不需要改變每一個控制器,因爲我指定了MovieRepository類。
  • 我認爲我需要做的最後一次調整是更改視圖。因爲它使用由Linq to Sql設計器創建的Product類。我不知道我將如何去做這件事。我想我應該使用一些不依賴於dbml文件的對象?

請原諒我,如果我有一個簡單的Asp.net Mvc視圖。我是一個webdesigner,對Asp.net的web開發很感興趣。

+1

不錯的問題。 – 2009-08-02 01:04:43

回答

1

你可能也有倉庫脫鉤,因爲注射的,如果你不遵循,因爲

public MoviesController() : this(new **MovieRepository**())

我建議你閱讀有關IOC只是例子,是很容易的,非常有趣,你可以使用和ioc容器,如城堡溫莎。

這樣,你的控制器將只有一個構造函數,一個接口,而不需要改變。

對於您的實體,您可以使用與控制器相同的操作,爲每個實體創建一個接口並使用ioc模式,只需要更改ioc容器的配置文件即可。

如果你不做這些事情,你的權利,你需要改變你所說的一切。

我希望有所幫助!對不起我的英語!

+0

你好,謝謝你的答案。我正在閱讀有關國際奧委會(這令人驚訝的不是國際奧委會!),似乎這是一條路。我對IoC的理解是,您可以告訴它爲特定接口使用特定的類,並且因爲這些設置存儲在單獨的文件中,所以很容易進行全局調整。唯一令我困擾的是我需要一個額外的IoC框架,並且還有不止一個框架。 無論如何,再次感謝您的答案。 – Pickels 2009-08-02 17:46:03

6

因此,經過幾天的閱讀和大量的谷歌搜索,我得到了它的工作。首先,我試圖找出IoC(控制反轉)究竟意味着什麼。

我發現的第一個網站之一是一個關於Unity的截屏視頻。這是一個用於.Net的DI/IoC框架。

望着那現在這其實是一個很不錯的截屏,並例如在它是多麼容易使用統一和IOC/DI。當時我完全不理解它,所以我繼續搜索,並一直在搜索。

我一直在遇到的一個網站是來自Martin Fowler的網站。

對我來說,一個人是新手,這個網站的編碼是有點抽象。這也許聽起來很奇怪,但該網站上的字體,行高和版式非常糟糕,這使得它更難以閱讀。

我讀到的下一個網站是關於溫莎城堡,因爲阿爾弗雷多費爾南德斯說它很容易使用。

的文件是不壞,但我遇到了一些問題,他們的轉換「入門」基本的例子,我的Asp.net MVC應用程序。第2部分和第3部分在他們入門時不見了。

之後,我開始尋找不同的框架,看看我能否找到一個非常基本的例子。如果我只是再看第一個截屏視頻,我會早點修復它,但不知何故我失去了它的蹤跡。

我有很多xml配置文件的問題,我似乎無法讓他們工作。我嘗試過Windsor,Structure Map和Spring.net,但我總是被xml文件困住。

所以我決定去Asp.net的mvc網站,因爲那是我開始學習Asp.net了MVC。我發現第一個截屏視頻和MIX09演示非常清晰,我理解了大部分人正在討論的內容。在構建店面應用程序時,我被Rob Conery第二次截屏。因爲我現在知道更多關於存儲庫和IOC/DI的信息,所以我認爲再次開始觀看Rob Conery的屏幕錄像是個好主意。在其中一個屏幕錄像中,他談到了將所有樣本上傳到codeplex。

我去CodePlex上,並發現可以通過源文件瀏覽,無需下載它們。我試圖找出Rob Conery如何用他的存儲庫處理IOC/DI。所以我很高興看到他使用Structure Map,而不是使用xml配置文件,而是使用引導程序類將所有接口註冊到具體類。

與我的web應用試圖在這之後我finaly能得到結構映射在我的應用程序工作(萬歲)。

他還向我展示瞭如何解決來自Sql的Linq對我的產品類的依賴。他創建了一個額外的對象,然後通過Linq查詢中的「select new product {}」進行調用。

哇,這個答案是比我計劃的時間稍長,但我希望這可以幫助其他人喜歡我,誰是在編碼和Asp.net的mvc非常新手。