c# – Mvc4:N层架构
工具:Mvc4,Sql server,Nhibernate
我正在学习Ntier架构,并计划用一个小例子来学习.这将是一个学生注册申请表,其中包含一份表格 我打算有以下几层 表示层(单独项目mvc 4应用程序) —学生表格的html就在这里.我可以在这里使用jquery等 服务层(单独的项目:类库项目.在这种情况下,只有web将是我的客户端.我将学习稍后在另一个项目中使用webAPI或wcf) —学生服务在这里 —这里是IstudentService 业务层:(单独项目:类库项目) 数据层:(单独项目:类库项目) 数据库:( sql server database) 现在我感到困惑,我的问题是: >我将在哪里创建我的学生模型(哪一层?) 一些例子会很棒.我会寻找一个好的IOC容器. 以下是示例代码: public interface IStudentService { IEnumerable<Student> GetStudents(); Student GetStudentById(int id); void CreateStudent(Student student); void UpdateStudent(Student student); void DeleteStudent(int id); void SaveStudent(); } public class StudentService : IStudentService { private DataContext _datacontext; public StudentService() { _datacontext = new DataContext(); } public IEnumerable<Student> GetStudents() { var students = _datacontext.Students; return students; } public Student GetStudentById(int id) { return _datacontext.Students.Find(id); } public void CreateStudent(Student student) { _datacontext.Students.Add(student); _datacontext.SaveChanges(); } public void UpdateStudent(Student student) { _datacontext.Entry(student).State = EntityState.Modified; //_datacontext.Entry(student).State = EntityState.Modified; _datacontext.SaveChanges(); } public void DeleteStudent(int id) { var student = _datacontext.Students.Find(id); _datacontext.Entry(student).State = EntityState.Deleted; _datacontext.SaveChanges(); } public void SaveStudent() { _datacontext.SaveChanges(); } } 解决方法
>您在数据层中创建模型.您还将在表示层中创建模型(对于您的视图模型).您通常会在控制器中的数据模型和演示模型之间进行某种映射.
>简单的应用程序通常不需要业务层.特别是如果您的应用只是将表单中的数据保存到表中.但是,在这样的应用程序中,您可能会执行诸如“除非您已经完成该课程,否则无法注册此课程”或“您已经注册了比您更多的课程”或“不.这些是必须在某处强制执行的业务规则,通常在业务层中. >您的数据层可能只是您的实体框架模型.只是您的代码加载并将模型保存到数据库. 有许多IoC容器..我喜欢Ninject,但其他人喜欢其他人..这通常是个人喜好的问题. 以上是如何在一个简单的应用程序中执行此操作.在更复杂的应用程序中,您的业务层也可能有一个模型.这一切都取决于应用程序的复杂性,以及是否需要以与数据模型级别不同的方式在业务级别表示数据. 例如,您可能在业务层中有业务对象列表,但出于性能原因,这些对象在数据层中的表示方式不同.但所有这些都不是你现在应该担心的事情.请理解,随着您的应用程序变得越来越复杂,您可能需要以不同的方式执行操作. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |