C# DAL、模型层、EF代码优先和业务逻辑,它们是如何结合在一起的?
一点一点地,我不了解ASP.NET MVC4,并且越来越精通它。然而,对于这一非常重要的一点,我的头脑仍然不清楚。假设我有一个模型:C# DAL、模型层、EF代码优先和业务逻辑,它们是如何结合在一起的?,c#,entity-framework,asp.net-mvc-4,data-access-layer,C#,Entity Framework,Asp.net Mvc 4,Data Access Layer,一点一点地,我不了解ASP.NET MVC4,并且越来越精通它。然而,对于这一非常重要的一点,我的头脑仍然不清楚。假设我有一个模型: public class WorkPaper { public int WorkPaperID { get; set; } public string name { get; set; } public string description {get ; set; } public bool verified {get; set;}
public class WorkPaper
{
public int WorkPaperID { get; set; }
public string name { get; set; }
public string description {get ; set; }
public bool verified {get; set;}
public DateTime dateAdded {get; set;}
}
我将此模型与实体框架代码优先的方法结合使用,我有以下DB上下文:
public class NicodemeContext : DbContext
{
public DbSet<WorkPaper> Workpapers { get; set; }
}
public类上下文:DbContext
{
公共数据库集工作文件{get;set;}
}
我不明白的是:什么是模型层,什么是数据访问层。对我来说,WorkPaper类往往是DAL的一部分,因为我设计了它,并选择了我的属性名称和类型(导航属性等),以适应EF模式。但问题是,如果我是对的,我真的不知道应该把业务逻辑放在哪里
在这种特定情况下,如果我想添加一条规则,说明未经验证的工作文件无法发送,以及另一条规则,说明如果工作文件在两周前添加,则无法提交(奇怪的规则,但这只是一个示例)。我应该在哪里添加它们?我必须创建另一个类吗?但是我应该把它放在哪里?它应该包含什么?对我已经上过的课来说,这不是很多余吗?但另一方面,由于该类是“面向数据库的”,在其中添加业务规则不是很麻烦吗
我的重点是理解我必须将业务逻辑放在哪里,理解DAL和模型之间的区别。我很难识别DAL和模型层,因为它们看起来与我非常相似。我想用正确的方式做事
(基本上,我不知道在哪里用MVC编写“我的程序”!当我想要编写我真正感兴趣的功能时,我感到不舒服。我觉得我做得不对)你可以将NicodemeContext类放在DAL中,将WorkPaper类放在模型层中
- 模型层是定义业务领域的地方。这就是您的业务逻辑所在
- 数据访问层是从模型层读取和写入数据库并填充对象的层
如果你认为MVC是严格表象的,那么MVC不在乎你使用什么样的数据访问,也不关心你使用的是哪种业务层。它可以是服务层、存储库或业务对象库(如CSLA)
MVC应用程序中的一种常见模式是使用某种类型的服务层,如果您只是在执行CRUD操作,则使用存储库。每个层之间通常都有某种映射系统,使用AutoMapper或自定义构建映射类等技术 这里的要点很简单。MVC本身并不关心业务和数据,所以不要为如何将这些内容融入MVC应用程序而烦恼。他们没有,或者至少他们没有,除了非常基本的接口。