2013-04-30 66 views
0

我有與webForms的經驗,現在我開始學習MVC,哦,男孩....一切看起來如此不同。由於我的背景是webForms,我只是想確保如果我正確地做到這一點。我正在從MS SQL Server提取數據(查詢,存儲過程等)&目標是在視圖內表示它們。這就是我所做的這麼做的。MVC和基本數據訪問

這裏是我的模型

Class Product ' Just a Template 
    private _title 
    private _price 
    ' property implementation etc 
End Class 

Class ProductModel ' Returns Actual Data 

    Function getProducts as list(of product) 
     ' use SqlDataReader to Execute the Stored Procedure 
     ' Populate a list(of product) 
     ' list.add(new product(title,price)) 
     ' Return the List 
    end function 


    Function getTopProducts() as list(of products) 

    End Function 
End Class 

現在,這裏是我的的ProductsController指數()ActionMethod。

Dim p as new ProductModel 
return view(p) 

然後在我的視圖(這是強類型的產品型號類),我使用的是對於每個上Model.getProductsModel.getTopProducts並在屏幕上顯示的數據。

現在很少有問題......首先,我的方法是否合理?這是使用MVC設置模型的標準方式嗎?如果沒有,請糾正我。其次,我在網上看到的所有例子,我看到人們使用LINQ,EF等....但是在我的環境中,性能非常重要,而且我幾乎總是使用存儲過程返回數據,所以可以使用純ADO.NET還是使用LINQ/EF可以以某種方式幫助我?

+1

使用純ado.net被認爲是最好的解決方案,如果你不太瞭解ORM。表單性能的原因(如果你沒有太多的關於ORM的技巧),ado.net被認爲是最好的 – 2013-04-30 06:13:25

回答

1

...我的方法是否合理?這是一種標準的設置方式 MVC的模型?如果沒有,請糾正我。

是的,最好的做法是使用viewmodel,而不是直接在您的視圖上處理實體。

可以使用純ADO.NET還是使用LINQ/EF可以幫我出一些 的方式嗎?

如果您覺得自己做的所有髒東西都是ORM提供的,那麼使用純ADO.NET是完全不錯的。

+0

我應該如何處理我的模型類(產品模型)的事件以便從我的控制器查看?我可以讓我的視圖從ProductModel類繼承,並在我的視圖中使用它的實體。 – highwingers 2013-04-30 06:07:19

+0

如果您正在創建一個帶有集合的新模型,那麼答案爲YES。您需要能夠從您的控制器傳遞您的視圖中需要的集合。而且你不會「繼承」你的視圖上的一個類,你「使用」(或消費)它。 – 2013-04-30 06:10:34

1

您的方法是當您瞭解MVC時主要顯示的方法。但是,如果您想對命名約定有點挑剔,那麼您的ProductModel將被稱爲ProductViewModel。此ViewModel將允許您向View傳遞更多信息,而不是您的Product類(這是您的模型類)中可用的信息。但是這是微不足道的,儘管你應該習慣使用View with ViewModels。

至於你的第二個問題,你可以使用任何你想要的數據訪問技術。實體框架被微軟推廣爲其操作數據庫中的信息的技術之一。但是,如果您希望可以將ADO.NET用於存儲過程,或者可以將RavenDB與其自己的客戶端界面一起使用。這真的取決於你。