加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – Mvc4:N层架构

发布时间:2020-12-15 05:40:25 所属栏目:百科 来源:网络整理
导读:工具:Mvc4,Sql server,Nhibernate 我正在学习Ntier架构,并计划用一个小例子来学习.这将是一个学生注册申请表,其中包含一份表格 一个.名字 湾姓 C.地址 d.学生卡 该应用程序将能够 一个.通过Id获取学生 湾吸引所有学生 C.注册新生/保存学生 d.编辑学生 即删
工具:Mvc4,Sql server,Nhibernate

我正在学习Ntier架构,并计划用一个小例子来学习.这将是一个学生注册申请表,其中包含一份表格
一个.名字
湾姓
C.地址
d.学生卡
该应用程序将能够
一个.通过Id获取学生
湾吸引所有学生
C.注册新生/保存学生
d.编辑学生
即删除学生

我打算有以下几层

表示层(单独项目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,但其他人喜欢其他人..这通常是个人喜好的问题.

以上是如何在一个简单的应用程序中执行此操作.在更复杂的应用程序中,您的业务层也可能有一个模型.这一切都取决于应用程序的复杂性,以及是否需要以与数据模型级别不同的方式在业务级别表示数据.

例如,您可能在业务层中有业务对象列表,但出于性能原因,这些对象在数据层中的表示方式不同.但所有这些都不是你现在应该担心的事情.请理解,随着您的应用程序变得越来越复杂,您可能需要以不同的方式执行操作.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读