我正在使用ASP.NET MVC 5创建我的第一个Web应用程序,并希望以正确的方式执行此操作。我计划创建一个带有表示层(MVC),数据访问层(DAL)和业务逻辑层(BLL)的体系结构。 DAL和BLL将是MVC项目中独立的类库。我们的想法是MVC项目将引用BLL来执行业务逻辑,然后引用DAL以与数据库进行交互。我正在使用存储库模式。
我的问题是,如何在图层之间传递数据?例如,假设我在MVC项目中有一个Entity Framework模型,用于具有FirstName和LastName属性的Student类。然后我创建一个强类型视图,用户可以通过填写一个简单的表单并单击“保存”来添加学生。学生模型将发布到Controller中相应的操作方法,对吗?那么Controller不需要将Student对象发送到BLL并从那里发送到DAL以插入数据库吗?但是,当BLL和DAL对Student课程一无所知时怎么会这样呢?
我不明白如果不创建循环依赖项,这是如何工作的。有人可以解释或提供代码示例吗?
提前谢谢。
答案 0 :(得分:1)
我认为你对MVC的想法通常是正确的,尽管你为什么会得到循环依赖有点令人困惑。根据你的解释,这是我能看到的:
M(模型) StudentViewModel (位于MVC应用程序项目中)
V(视图) Create.cstml(model是StudentViewModel)(住在MVC app项目中)
C(控制器) 使用StudentViewModel 导航到CreatePage(位于MVC应用程序项目中)
当控制器执行Post时,您将填充的StudentViewModel注入到您的方法中,这就是可能发生的情况:
所以你最终得到了像这样的依赖图
MVC app引用BLL引用DAL引用实体层。
还有很多其他方法可以使用依赖注入等方式更好地完成上述结构,但这至少应该回答一些问题(并创建许多其他问题):)