繁体   English   中英

如何使用EF6在MVC 5中实现业务逻辑

[英]How to implement business logic in MVC 5 with EF6

我已经阅读了带有EF6 DB FirstMVC5教程 通过本教程,它将生成代码(控制器和视图)。

我在VS中创建了3 个项目

+ AdminWebSite
+ PublicWebSite
+ EntityFramework

我有一个问题,我应该在哪里实施业务逻辑,并将其共享给多个网站(管理员和公共)?

业务逻辑可以包括:

  • 具有数据库的逻辑(即具有多表的事务)
  • 带有SharePoint信息的逻辑
  • 电子邮件服务器逻辑

编辑

错别字应该是3个项目,而不是3个解决方案,但是应该是类似的情况,其中AdminWebSitePublicWebSite已添加EntityFramework作为参考。

编辑2

在MVC3之前,我将创建一个包含所有业务逻辑以及Repository类的类项目。 这样,每个WebSiteWebServices都可以使用相同的业务逻辑(但我不确定这是最佳实践)。

但是,当使用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的接口,该接口也位于核心中。

这基本上是我建议的结构:

  • AdminWebSite
  • PublicWebSite
  • 基础设施
    • EF
    • 日志
    • 消息
    • 的SharePoint
  • 核心
  • 测试(该项目包含您的所有单元测试和集成测试)

我真的建议您阅读有关使用依赖注入的知识。 当您了解DI时,将核心和基础结构分离是有意义的,并且您会看到它们在没有任何硬性参考的情况下如何相互使用。

如果您不想使用UoW或存储库,我建议您将EF移至核心,但是基础结构项目对于其他外部服务仍然非常有效。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM