工具:Mvc4、Sql server、Nhibernate
我正在学习 Ntier 架构,并计划通过一个小例子来学习这个。这将是一个学生注册申请,其中包含一个表格。名字 b. 姓氏 c. 地址 D. 学生 ID 应用程序将能够 a。通过 Id b 获取学生。让所有学生 C. 注册新学生/保存学生 d. 编辑学生 e. 删除学生
我计划有以下几层
表示层(单独的项目 mvc 4 应用程序)
--- 学生表格的 html 在这里。我可以在这里使用 jquery 等 --- 我的控制器将调用该服务
服务层(单独的项目:类库项目。在这种情况下,只有 web 将是我的客户端。稍后我将在另一个项目中学习使用 webAPI 或 wcf)
--- 学生服务在这里
--- 这里是学生服务
业务层:(独立项目:类库项目)??
数据层:(单独项目:类库项目)??
数据库:(sql server 数据库)
现在我很困惑,我的问题是:
我将在哪里创建我的学生模型(哪一层?)
对于我的这个学生示例,我将在我的业务层中写什么。
我的数据层会发生什么?我将编写哪些方法?它们是直接与数据库通信的方法吗?
一些例子会很棒。我会寻找一个好的 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();
}
}