我已阅读MVC5 with EF6 DB First tutorial。通过本教程,它将生成代码(控制器和视图)。
我在VS中创建了3个项目:
+ AdminWebSite
+ PublicWebSite
+ EntityFramework
我有疑问,我应该在哪里实施业务逻辑,并分享多个网站(Admin& Public)?
业务逻辑可能包括:
修改
错字,应该是3个项目而不是3个解决方案,但它应该是类似的情况,AdminWebSite
和PublicWebSite
添加EntityFramework
作为参考。
编辑2
在MVC3之前,我将创建一个包含所有业务逻辑的类项目,以及Repository类。这样每个WebSite
或WebServices
都可以使用相同的业务逻辑(但我不确定这是最佳做法)。
但是当使用EF6迁移到MVC5时,存储库和工作单元似乎已经消失。并且不希望为每个表实现存储库,其中一些表仅用于没有业务逻辑的直接CRUD。
我希望这可以澄清是Too broad
。
答案 0 :(得分:0)
看看这个: http://dombrovsky.github.io/EntityHooks/
它看起来像一个旨在与EF6一起使用的框架。它应该允许您在发生某个事件时编写自定义业务逻辑,例如插入或更新记录时。
答案 1 :(得分:0)
您可以在解决方案下使用项目。
我通常将数据库层放在一个单独的项目(类库/ DLL)中,让其他项目引用它。这样,您只有一个ORM(实体框架)副本,简化了数据库模型中的任何更改。我还创建了一个数据库项目(如果是SQL服务器),它包含实际的模式定义,包括表和存储过程。这是在架构中进行更改并部署它的好方法。
只要有足够多的代码可以重复使用,通常最好将它作为类库并让客户端项目引用它。
答案 2 :(得分:0)
一个解决方案包括Web项目,BLL项目,DAL项目,Web项目包含发布和管理
答案 3 :(得分:0)
我不会有一个名为EntityFramework的项目,我建议你用一个名为Infrastructure的项目替换这个项目。此基础结构项目将包含依赖于外部源(如EmailSenders和DAL类,如EntityFramework类)的类以及您将来可能希望用其他外部服务替换的其他内容。
您的业务逻辑应存储在Core项目中。该核心项目不会引用Web项目或基础结构项目(但Web项目将引用基础结构和核心项目)。如果你需要核心项目中的EmailSender,你可以引用像IEmailSender这样的界面,它也位于核心。
这基本上就是我建议的结构:
我真的建议您阅读使用依赖注入。当你理解DI时,核心和基础设施的分离是有意义的,你会看到它们如何在没有任何硬引用的情况下相互使用。
如果您不想使用UoW或存储库,我建议您将EF移至核心,但基础结构项目对其他外部服务仍然非常有效。