在MVC中编写数据库和业务逻辑的位置?

nun*_*unu 14 asp.net-mvc asp.net-mvc-2

正如我在学习和Asp.Net MVC应用程序的工作,我想知道什么是更好的地方来写Business Logic,并Data Access logicMVC.

我应该在哪里编写DataAccess和Business Logic三层(Model, View and Controller)?

有人可以告诉我为此编写代码的正确方法.

场景:我想retrieve all the employees where employee name like 'Mi%'(我有SQL procedure to execute and retrieve the data.)

PS:想知道我应该在哪里创建Business Logic类的实例以及我应该在哪里创建Data Access层类的实例?

提前致谢.

kil*_*net 10

业务逻辑(BL)和数据访问(DAO)应位于不同的层中.模型应该只保留数据而不包含逻辑.控制器应仅从视图接收数据并将其发送到BL层(或从BL发送到视图).
这不是一个严格的规则,但最近使用的方法

  • 究竟!MVC!= 3层开发.MVC仅是UI级别.业务逻辑和数据库访问应该在其他地方. (2认同)

blu*_*blu 7

业务逻辑应该在模型中.

数据访问可以在以后的控制器调用中自行调用,也可以在控制器通过存储库调用的ORM中自动执行.

Nerd Dinner中可以找到一个漫步覆盖,寻找免费下载部分.

  • @nunu:不要将业务逻辑视为"业务逻辑类",而应将逻辑视为模型.书呆子晚餐教程的第3部分有一些基本的例子:http://nerddinnerbook.s3.amazonaws.com/Part3.htm (2认同)
  • 根据我的经验,UI,BLL,DAL方法通常不在MVC中使用.业务逻辑进入模型,DAL在ORM中实现,可通过存储库访问.您可能会在架构方面发生转变,而pdf将会有很大帮助.为了帮助您入门,您可以在控制器中使用BLL/DAL类,并在了解有关MVC的更多信息时进行重构. (2认同)
  • @blu在结构良好的应用程序中,您应该能够将MVC替换为WCF或任何其他UI /访问策略,并且逻辑仍将存在.如果将逻辑包装到视图模型/控制器中,则表示您违反了此规则. (2认同)