2013-11-20 62 views
0

正如主題所說......這個問題是關於爲我的項目設置正確的結構。如果你認爲有更好的地方提出這個問題,那麼請提供建議。使用MVC的項目結構4

我有一個使用ET &存儲庫模式的MVC 4項目。此時,我有DAL & UI層。

當前我正在使用我的DAL進行數據訪問,並在我的數據訪問層中創建了我的接口& ViewModels。我有一種感覺,我做錯了。這裏是我的樣本設置。

MY DAL層(其包括下面的接口,回購&視圖模型)

DAL.ViewModel

Public Class ProductSummaryViewModel 
    Property productGUID As Integer 
    Property productName As String 
End Class 

DAL.Interface(對於Repostiory圖案)

Public Interface IProductRepository 
    Property ProductIdentityID As Integer 
    Property ImageMainPath As String 
End Interface 

個DAL.Products庫

Public Class productsRepository 
    Implements IProductRepository 

    Private _db As websolutionsEntities = New websolutionsEntities() 

Public Function AddProduct(ByVal prdSummary As ProductSummaryViewModel) As Boolean Implements IProductRepository.AddProduct 

     _db.AddProduct(prdSummary) 
     Return true 

    End Function 

這裏是我的控制器

Private ProductRepoitory As DAL.IProductRepository 
    Sub New() 
     Me.new(New DAL.productsRepository()) 
    End Sub 

    Sub New(ByVal repo As DAL.IProductRepository) 
     repo = ProductRepoitory 
    End Sub 

Public Function AddItem(ByVal prd As DAL.ProductSummaryViewModel) As ActionResult 
     Dim test as boolean = DAL.ProductRepoitory.AddItem(prd) 
End Function 

我的項目將在不久的將來成長,所以我要正確設置它,但我不希望讓別人和我自己也變得太複雜。請告知您的建議。

+0

我可以給你的最好的建議是使用[commands](http://www.cuttingedge.it/blogs/steven/pivot/entry.php?id=91)和[queries]( http://www.cuttingedge.it/blogs/steven/pivot/entry。PHP?ID = 92)。 – Steven

+0

我對實現Business/Domain層更感興趣,但不知道如何實現這一點,以及在哪一層我應該創建我的接口和ViewModels。 – highwingers

回答

0

你可以把你的項目是這樣的:

CORE

  • 接口(例如:IProductRepository)
  • 域名(例如:產品)

DAL

  • ProductRepository

MVC

  • 的ViewModels或型號(例如:ProductsSummaryViewModel)
  • 控制器(例如:ProductsController的)

,務必CORE接口一樣,域名的文件夾。您可能已經在MVC前端項目中擁有一個控制器文件夾。您也可能已經有一個名爲Models的文件夾,只是將它用於ViewModels。任何只用於顯示目的的東西,比如ViewModel類,應該只存在於前端。

+0

我應該在哪裏創建所有我的實體(模型爲我的SQL表),另一個問題是我....如果我存儲我的viewModels在MVC層,然後我的DAL方法返回ViewModels ...我真的不想我的DAL依靠MVC層。 – highwingers

+0

DAL不應返回ViewModels,它們應返回僅「產品」之類的模型。您可以將模型放在CORE.Domain或DAL.Models中。通常,人們在DATA和MVC之間放置SERVICE層,您可以在其中填充「ProductSummary」之類的內容,但它們不是「ViewModels」,它們是DTO的。您可以將這些內容放到CORE.DO至 – sunil

+0

中,我的SQL查詢返回多個表的結果,換句話說,我不能簡單地在我的DAL方法中返回產品對象,我需要返回在ViewModels中定義的混合列。 ..可能是有辦法從我的DAL返回一個泛型類型,然後使用我的服務層來填充ViewModels?你明白了嗎? – highwingers