我已经阅读了一些关于此事的文章,但我想再问一遍,因为我不确定如何解决我的问题。
我在使用MVC3的项目上工作。该项目应管理学校系统(学校,学生,教师,家长,用户,角色等)。在这样的学校管理系统的中心是 - 科目的时间表。
我们通过EF4(数据库第一种方法)从MS SQL Server获取数据,这意味着所有实体类都是自动创建的。因此,我有一个代表数据库表的类,如School,Pupil,Teacher,Role等。我有DbContext派生类。
我们主要知道我们的演示文稿(UI)层应该是什么样的。
问题在于我们通过使用EF4自动获得的UI和类之间的层次,我已经提到过。我已经阅读了关于存储库和工作单元模式并了解它们的工作原理。我认为我们可以应用这些模式,但我们的项目架构师想要使用其他东西。他想要清晰地分层。他希望从位于业务层的控制器调用简单方法,这意味着几乎整个逻辑不应该在控制器中,而是在业务层中。
我现在不确定应该从什么开始。我有所有实体课程学校,学生,教师,角色等。而且我有DbContext派生类。这意味着这些类是业务层的输入。什么应该输出业务层?我怎样才能设计业务层?
提前谢谢。
戈兰
答案 0 :(得分:2)
您只需创建一个业务层。通常,这将是您的解决方案中的新项目。 PROJECT.Business或PROJECT.BLL或类似。
此图层包含映射到您的域的类,因此您可以创建与Pupil,Teacher,School等类似的类。
你可能有一个School课程,那个学校课程有像“GetStudents()”这样的方法然后这个GetStudents()方法将实例化你的数据层,并返回一个学生集合。如果您需要应用任何逻辑,那就是这个地方。
MVC是UI层。 EF是数据层。您可以根据需要创建业务层,它不是MVC或数据层的一部分,完全取决于您。
答案 1 :(得分:0)
在我看来,你应该有一个存储库,用于从数据库获取数据和查询数据。对于操作数据或准备输出的操作,您可以简单地扩展模型中已有的类以提供该功能。业务层应输出与您的视图中使用相关的数据。这些数据可以通过存储库在控制器中请求,由扩展类处理,然后在视图的强类型模型中准备。