使用EF 4.3设计带有模块的Web平台

时间:2012-03-09 09:58:32

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

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

首先,我有一个MVC3自定义模板,其中包含一个包含我的身份验证模型的ClassLibrary项目(一些存储库和一些带有两个Entity Framework对象的自定义提供程序:User和Role using“BaseDataContext”)。 第二个我有另一个名为Blog的ClassLibrary项目,其中包含我博客的模型(所有EF POCO,一些存储库和“BlogDataContext”) 我也使用IoC。

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

总之,我的问题不是很具体。这更像是一个建筑设计问题。 我正在努力实现的目标是什么?或者尝试查找CircularDependency问题的解决方法是否安全? 如果不是我应该如何设计“CMS”,或者我应该如何简化重用我的工作。 (迁移功能似乎很有趣,例如,如果您有一个有效的电子商店,并且客户端请求添加博客)

提前谢谢你。

1 个答案:

答案 0 :(得分:1)

我会考虑将您的整个设计解耦,使所有逻辑单元(单点登录,cms,电子通讯,报告等)彼此独立,并找出如何使用最少量的数据进行通信可能。例如,您可以将经过身份验证的用户的GUID向下传递到CMS而不是整个User对象。 一旦你明白了,使用WCFWF你可以协调所说的通信,创建工作流等。你将获得的最大优势是你的平台可以插拔和扩展,你可以添加或删除组件根据您的需要或根据您的负载添加和删除资源。