【问题标题】:How to build business layer in MVC3 project?MVC3项目中如何构建业务层?
【发布时间】:2012-01-22 20:02:21
【问题描述】:

我已经阅读了一些关于这个问题的文章,但我想再问一次,因为我不确定如何解决我的问题。

我从事使用 MVC3 的项目。该项目应管理学校系统(学校、学生、教师、家长、用户、角色等。此类学校管理系统的核心是 - 课程表。

我们通过 EF4(数据库优先方法)从 MS SQL Server 获取数据,这意味着所有实体类都是自动创建的。因此,我有这样一个类来表示诸如 School、Pupil、Teacher、Role 等数据库表。而且我有 DbContext 派生类。

我们主要知道我们的表示 (UI) 层应该是什么样子。

问题在于我们使用 EF4 自动获得的 UI 和类之间的层,我已经提到过。我已阅读有关存储库和工作单元模式的信息,并了解它们是如何工作的。我认为我们可以应用这些模式,但我们的项目架构师想要使用其他东西。他希望有清晰的层次分离。他想从放在业务层的控制器中调用简单的方法,这意味着几乎整个逻辑不应该在控制器中,而应该在该业务层中。

我现在不确定应该从什么开始。我有所有这些实体类学校、学生、教师、角色等。我有 DbContext 派生类。这意味着这些类是业务层的输入。业务层的输出应该是什么?如何设计业务层?

提前谢谢你。

戈兰

【问题讨论】:

    标签: asp.net-mvc-3


    【解决方案1】:

    您只需创建一个业务层。通常,这将是您解决方案中的一个新项目。 PROJECT.Business 或 PROJECT.BLL 或类似的。

    该层具有映射到您的域的类,因此您可以创建与 Pupil、Teacher、School 等类似的类。

    您可能有一个 School 类,并且该学校类具有诸如“GetStudents()”之类的方法,然后此 GetStudents() 方法将实例化您的数据层,并返回一组学生。如果你需要应用任何逻辑,这里就是地方。

    MVC 是 UI 层。 EF 是数据层。您可以根据需要创建业务层,它不属于 MVC 或数据层,完全取决于您。

    【讨论】:

    • 神秘人,我已经实现了你的建议。非常感谢。
    【解决方案2】:

    在我看来,您应该有一个存储库,用于从数据库中获取数据并进行查询。对于操作数据或准备输出的操作,您可以简单地扩展模型中已有的类以提供该功能。业务层应该输出与您的视图中使用相关的数据。这些数据可以通过存储库在控制器中请求,由扩展类处理,然后在视图的强类型模型中进行准备。

    【讨论】:

    • 感谢您的建议。
    猜你喜欢
    • 1970-01-01
    • 2011-08-17
    • 1970-01-01
    • 1970-01-01
    • 2023-03-25
    • 2014-04-13
    • 1970-01-01
    • 2015-01-08
    • 2011-06-16
    相关资源
    最近更新 更多