2015-05-11 63 views
0

我使用.NET開發了一個ntier MVC應用程序。我有四層。 UI層,ServiceLayer,業務層和DAL。 (我使用EF5 for DAL)N層應用程序數據模型

我爲我的實體添加一個項目。我的項目結構如下。

MyProject.DAL 
MyProject.Interfaces 
MyProject.Entities 
MyProject.MvcWebUI 
MyProject.BLL 

我想知道,我需要強類型方法的返回類模型。但它不是數據庫中必需的存儲。不久它不是一個實體。

例如我有產品實體。但是我需要一個模型來存儲產品的狀態和數量。應該如何找到它?

public enum ProdReviewResult 
{ 
    Accepted = 1, 
    Declined = 2, 
    Banned = 4 
} 

//MyProject.DAL 
//I need here return to strongly typed model 
public List<object> GetProdReviewStatusByProdGroup(int userId, int prodGroupId) 
{ 
    var query = from p in _db.Products 
     join pg in _db.ProdGroups on p.ProdGroupId equals pg.ProdGroupId 
     where pg.UserId == userId && p.UserId == userId 
     group p by p 
     into g 
     select new {ProdViewResult = g.Key, ProdCount = g.Count()}; 

    var reviewStatus = new List<object>(); 
    foreach (var result in query) 
    { 
     reviewStatus.Add(new {result.ProdViewResult, result.ProdCount}); 
    } 

    return reviewStatus; 
} 

//This class model for products to group by ProdReviewStatus. 
//How should i locate in my project. 
public ProdReviewCount() 
{ 
    public ProdReviewStatus ProdReviewStatus{get;set;} 
    public int Count{get;set;} 
} 

回答

0

我沒有你的應用程序的親密知識,但這對我來說似乎過分。服務層,業務層和DAL幾乎完全相同。它們都是域的一部分。除非你有一個很好的理由沒有在這裏討論,爲什麼你需要所有三個作爲不同的項目,我想說你應該考慮試圖合併一些適當的。

也就是說,你所說的只是一個DTO(數據傳輸對象)。因此,根據您當前的結構,我會說它應該與您的DAL項目一起進行。

+0

我使用我的服務層(MyProject.Interfaces)移動應用程序。我將它託管在IIS上。我使用BLL進行各種商業運作。 – Yargicx

+0

我同意Chris Pratt的觀點,儘管我可能會把DAL作爲一個單獨的項目。 N-Teir幾年前沒有過時嗎?! –