Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# N层应用程序数据模型_C#_Asp.net Mvc_Entity Framework_N Tier Architecture - Fatal编程技术网

C# N层应用程序数据模型

C# N层应用程序数据模型,c#,asp.net-mvc,entity-framework,n-tier-architecture,C#,Asp.net Mvc,Entity Framework,N Tier Architecture,我用.NET开发了一个新的MVC应用程序。我有四层。 UI层、服务层、业务层和DAL。(我将EF5用于DAL) 我为我的实体添加一个项目。我的项目结构如下 MyProject.DAL MyProject.Interfaces MyProject.Entities MyProject.MvcWebUI MyProject.BLL 我想知道,我有时需要强类型的类模型来返回方法。但它不是数据库中必要的存储。很快它就不是一个实体了 例如,我有产品实体。但我需要一个模型,它是商店产品的状态和数量。你应该

我用.NET开发了一个新的MVC应用程序。我有四层。 UI层、服务层、业务层和DAL。(我将EF5用于DAL)

我为我的实体添加一个项目。我的项目结构如下

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;}
}
公共枚举ProdReviewResult
{
已接受=1,
拒绝=2,
禁止=4
}
//MyProject.DAL
//我需要在这里返回到强类型模型
公共列表GetProdReviewStatusByProdGroup(int-userId,int-prodGroupId)
{
var query=来自_db.Products中的p
在p.ProdGroupId上的_db.ProdGroups中加入pg等于pg.ProdGroupId
其中pg.UserId==UserId&&p.UserId==UserId
p-by-p组
进入g
选择新{ProdViewResult=g.Key,ProdCount=g.Count()};
var reviewStatus=新列表();
foreach(查询中的var结果)
{
Add(新的{result.ProdViewResult,result.ProdCount});
}
返回评论状态;
}
//此类模型用于按ProdReviewStatus对产品进行分组。
//我应该如何在我的项目中定位。
公共ProdReviewCount()
{
公共ProdReviewStatus ProdReviewStatus{get;set;}
公共整数计数{get;set;}
}

我对您的应用程序不太了解,但这对我来说太过分了。服务层、业务层和DAL几乎都是一样的。他们都是这个领域的一部分。除非你有一个很好的理由没有在这里讨论为什么你需要把这三个项目都作为不同的项目,否则我认为你应该考虑在适当的地方合并其中的一些项目


也就是说,您所说的只是一个DTO(数据传输对象)。因此,基于您当前的结构,我认为它应该与您的DAL项目配合使用。

我将我的服务层(MyProject.Interfaces)用于移动应用程序。我将在IIS上托管它。我使用BLL进行各种业务操作。我同意Chris Pratt的观点,尽管我可能会将DAL作为一个单独的项目。N-Teir不是几年前就过时了吗?!