【问题标题】:Designing a web platform with modules using the EF 4.3使用 EF 4.3 设计带有模块的 Web 平台
【发布时间】:2012-03-09 09:58:32
【问题描述】:

我正在尝试使用带有迁移的 EF 4.3 构建一个 Web 平台(CMS 之王)。所以我想把我所有的工作从其他项目中分解出来,比如电子商店、时事通讯、博客等;到包含模型的单独的 ClassLibrary 项目中(以后可能会构建一些 NuGet 包)。我希望我可以将它们集成到我的自定义 mvc3 模板中,然后为我的控制器和视图使用一些高级脚手架。

首先我有一个 MVC3 自定义模板,它有一个包含我的身份验证模型的 ClassLibrary 项目(一些存储库和一些自定义提供程序,具有两个实体框架对象:使用“BaseDataContext”的用户和角色)。 其次,我有另一个名为 Blog 的 ClassLibrary 项目,其中包含我的博客的模型(所有 EF POCO、一些存储库和“BlogDataContext”) 我也使用 IoC。

我遇到的第一个问题是 CircularDependecy,如果我希望我的 Blog.Author 继承自我的 Template.User 和我的 User POCO,我需要一个从我的博客到我的模板的引用和一个从我的模板返回到我的博客的引用对我的作者的参考。 我知道身份验证和博客模型处于同一“级别”并且应该在同一个类库中,但请记住以后应该允许添加更多库(例如“通讯”库) ,我不能将实体分解到一个单独的库中。 我正在考虑的第二个问题是使用多个 DataContext,但这是另一个主题。

所以总而言之,我的问题不是很具体。这更像是一个建筑设计问题。 我正在努力实现的目标是可能的吗?或者尝试找到解决 CircularDependency 问题的方法是否安全? 如果不是,我应该如何设计“CMS”,或者我应该如何让重复使用我的工作变得简单。 (迁移功能看起来很有趣,例如,如果您有一个正在运行的电子商店并且客户端请求添加一个博客)

提前谢谢你。

【问题讨论】:

  • 嗨,这不是真的; - 相同的“级别”并且应该在同一个类库中 - 如果我们谈论 EF 4.3,您可以为实体模型使用不同的类库。

标签: asp.net-mvc-3 entity-framework design-patterns content-management-system software-design


【解决方案1】:

我会考虑将您的整个设计解耦,使所有逻辑单元(单点登录、cms、e-comm、报告等)相互独立,并弄清楚如何以最少的数据量在它们之间进行通信可能的。例如,您可以将经过身份验证的用户的 GUID 传递给 CMS,而不是整个用户对象。 一旦你弄清楚了,使用WCFWF,你可以协调所述通信,创建工作流等。你将获得的最大优势是你的平台将是可插拔和可扩展的,你可以根据需要添加或删除组件或根据您的负载添加和删除资源。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-06
    • 2015-01-27
    • 2012-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-05
    • 2012-03-20
    相关资源
    最近更新 更多