【发布时间】:2015-08-17 01:25:45
【问题描述】:
我正在使用 ASP.NET MVC 5 创建我的第一个 Web 应用程序,并希望以正确的方式进行。我计划创建一个包含表示层 (MVC)、数据访问层 (DAL) 和业务逻辑层 (BLL) 的架构。 DAL 和 BLL 将是独立于 MVC 项目的类库。这个想法是 MVC 项目将引用 BLL 来执行业务逻辑,然后引用 DAL 来与数据库交互。我正在使用存储库模式。
我的问题是,数据如何在层之间传递?例如,假设我在 MVC 项目中有一个实体框架模型,用于具有属性 FirstName 和 LastName 的 Student 类。然后我创建了一个强类型视图,用户可以通过填写一个简单的表单并单击“保存”来添加学生。 Student 模型会发布到Controller中对应的action方法,对吗?那么控制器不需要将学生对象发送到 BLL 并从那里发送到 DAL 以插入数据库吗?但是,如果 BLL 和 DAL 对 Student 类一无所知,那怎么可能呢?
如果不创建循环依赖项,我不明白这如何工作。有人可以解释或提供代码示例吗?
提前谢谢你。
【问题讨论】:
-
为什么模型不能被所有项目引用。是因为您在 MVC Web 应用程序中定义它吗?你能把你的模型对象分成一个包含 MVC 和层引用的普通旧 .Net 类的程序集吗?
-
@Braim 正确,我在 MVC Web 应用程序的 Models 文件夹中定义模型。我想我可以在单独的类库中定义模型,但这是标准约定吗?
-
我还看到人们使用在控制器和业务逻辑之间引入的“数据映射器”。但这并没有让它变得更好,因为要么必须根据约定(名称)/XSD/映射配置来完成映射,要么会形成类似形式的依赖关系。
标签: c# asp.net-mvc design-patterns n-tier-architecture business-logic