我继承了一个ASP.NET(4.6.1)MVC解决方案,该解决方案使用实体框架(首先是数据库)作为其数据访问权限。所有dbcontext
调用和所有业务逻辑都在控制器方法中。没有域模型。...仅查看模型和从EF生成的实体模型。
所以解决方案的结构基本上是:
至少,我想将我的DAL与我的表示层隔离,并清理我的控制器。我不是要创建完美的应用程序...而是要进行逐步改进。因此,本轮我的目标是创建一个逻辑结构。
因此,我要在Web和DAL之间添加另一个项目(称为Service或其他),并将所有dbcontext调用/逻辑移到该层。我要添加另一个项目(称为Core)来容纳一些DTO,自定义异常和其他东西。
这是我当前的解决方案:
Web(带有Autofac的MVC Web项目)
核心(请勿与.NET Core混淆)
服务
var result = dbcontext.SomeTable where some id = n...blah blah
)中的所有复杂CRUD dbcontext调用DAL
因此,我将自动生成的dbcontext保留在DAL中,将生成的实体对象移至Core,以便Service可以看到它们。
我的问题:
将所有dbcontext调用/逻辑移出控制器并移入服务是否有意义?某些逻辑很简单,但是有几种控制器方法也具有复杂的业务逻辑。我只是不确定将该逻辑/调用放在dbcontext的位置。
整体解决方案设计看起来还不错,还是我使其变得复杂了?这是一款中等大小的应用程序,但它具有发展潜力,我想为自己的未来发展做好准备。
感谢阅读...感谢任何输入!