[英]How to implement business logic in MVC 5 with EF6
我已经阅读了带有EF6 DB First的MVC5教程 。 通过本教程,它将生成代码(控制器和视图)。
我在VS中创建了3 个项目 :
+ AdminWebSite
+ PublicWebSite
+ EntityFramework
我有一个问题,我应该在哪里实施业务逻辑,并将其共享给多个网站(管理员和公共)?
业务逻辑可以包括:
编辑
错别字应该是3个项目,而不是3个解决方案,但是应该是类似的情况,其中AdminWebSite
和PublicWebSite
已添加EntityFramework
作为参考。
编辑2
在MVC3之前,我将创建一个包含所有业务逻辑以及Repository类的类项目。 这样,每个WebSite
或WebServices
都可以使用相同的业务逻辑(但我不确定这是最佳实践)。
但是,当使用EF6迁移到MVC5时,存储库和工作单元似乎消失了。 并且不想为每个表实现存储库,某些表仅用于没有业务逻辑的直接CRUD。
我希望这可以弄清楚Too broad
。
看看这个: http : //dombrovsky.github.io/EntityHooks/
它看起来像一个旨在与EF6一起使用的框架。 它应该允许您在发生某些事件(如插入或更新记录)时编写自定义业务逻辑。
您可以在解决方案下利用项目 。
我通常将数据库层放在一个单独的项目(类库/ DLL)中,然后让其他项目引用它。 这样,您只有一个ORM(实体框架)副本,可以简化数据库模型中的所有更改。 我还创建了一个数据库项目(如果是SQL Server),其中包含实际的模式定义,包括表和存储过程。 这是在架构中进行更改和部署的好方法。
只要有足够多的代码可以重复使用,通常最好将其设置为类库,并让客户项目引用它。
一种解决方案包括Web项目,BLL项目,DAL项目,该Web项目包含发布和管理
我将没有一个名为EntityFramework的项目,建议您将其替换为一个名为Infrastructure的项目。 该基础结构项目将包含依赖于外部源的类,例如EmailSenders和DAL类,例如EntityFramework类,以及您出于某些原因将来可能希望用其他外部服务替换的其他东西。
您的业务逻辑应存储在Core项目中。 该核心项目既不会引用Web项目,也不会引用基础结构项目(但是Web项目将引用基础结构和核心项目)。 如果您在核心项目中需要一个EmailSender,则可以引用类似IEmailSender的接口,该接口也位于核心中。
这基本上是我建议的结构:
我真的建议您阅读有关使用依赖注入的知识。 当您了解DI时,将核心和基础结构分离是有意义的,并且您会看到它们在没有任何硬性参考的情况下如何相互使用。
如果您不想使用UoW或存储库,我建议您将EF移至核心,但是基础结构项目对于其他外部服务仍然非常有效。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.