工具:Mvc4,Sql server,Nhibernate
我正在学习Ntier架构,并计划通过一个小例子来学习。这将是一个学生注册应用程序,其中将有一个表格用于:
a.名字
b.姓氏
c.地址
d.学生ID
该应用程序将能够:
a.根据ID获取学生
b.获取所有学生
c.注册新学生/保存学生
d.编辑学生
e.删除学生
我计划拥有以下层次结构:
表示层(单独的项目mvc 4应用程序)
--- 学生表单的HTML在此处。 我可以在此处使用jquery等 ---我的控制器将调用服务
服务层(单独的项目:类库项目。 在这种情况下,只有Web将是我的客户端。 我将在另一个项目中学习使用WebAPI或WCF)
--- StudentService在此处
--- IstudentService在此处
业务层:(单独的项目:类库项目) ??
数据层:(单独的项目:类库项目) ??
数据库:(SQL Server数据库)
现在我感到困惑,我的问题是:
1.我将在哪一层创建我的学生模型(哪一层?) 2.对于我所拥有的学生示例,我将在我的业务层中编写什么内容。 3.我的数据层会有什么? 我将编写哪些方法? 它们是直接与数据库通信的方法吗?
以下是示例代码:
我计划拥有以下层次结构:
表示层(单独的项目mvc 4应用程序)
--- 学生表单的HTML在此处。 我可以在此处使用jquery等 ---我的控制器将调用服务
服务层(单独的项目:类库项目。 在这种情况下,只有Web将是我的客户端。 我将在另一个项目中学习使用WebAPI或WCF)
--- StudentService在此处
--- IstudentService在此处
业务层:(单独的项目:类库项目) ??
数据层:(单独的项目:类库项目) ??
数据库:(SQL Server数据库)
现在我感到困惑,我的问题是:
1.我将在哪一层创建我的学生模型(哪一层?) 2.对于我所拥有的学生示例,我将在我的业务层中编写什么内容。 3.我的数据层会有什么? 我将编写哪些方法? 它们是直接与数据库通信的方法吗?
以下是示例代码:
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();
}
}