1

我环顾四周,但找不到任何回答与文件/项目结构有关的特定问题的任何内容。.NET MVC3项目结构

我有一个使用实体框架的MVC3网站。它遵循一个使用StructureMap处理依赖关系解析的基本通用存储库模式。

我的问题是,我该如何摆放项目?考虑到我可能想将数据库暴露给另一个应用程序。

目前我有:

mySite.Web - MVC项目也已全部依赖解析

mySite.Web.Data - EntityFramwork CodeFirst,库模式

mySite.Web .Tests - 测试... :-)

我应该将EntityFramwork模型移动到自己的项目中吗?如果是这样的话,我的EntityContextFactory会去哪里?

感谢

+0

这在很大程度上是主观的,但这里是我做的: App.Domain - 业务逻辑(模型,合同) App.Infra - 数据/基础设施相关的(映射,存储库) App.Web.Mvc - 前端(控制器,视图,IoC) App.Tests –

回答

1

我会创建一个名为mySite.Domain的新项目,并可能在该项目中创建一个实体文件夹并将它们放在那里。

我只会将实体存储在域中,并将所有存储库,您的dbcontext和实体contextfactory保存在您的Data项目中。

下面是一些样本项目,你可以看看(信贷作家):

http://myfinance.codeplex.com/

https://github.com/darind/samplemvc

这在很大程度上是主观的,但。

1

没有这种结构good.you可移动模式库来mySite.Web或者为它创建另一个类库项目,但它是没有必要的。

2

我有同样的问题 - 如何设置一个新的mvc项目? 我对其他用户的研究和帮助是:一种好的结构方法是针对MVC体系结构的域驱动设计

good blog post for DDD

我的新项目结构将是这个样子:

  • Presentation.Web(控制器,视图,ModelViews ..)
  • Presentation.Web.Utils(辅助和扩展。 )
  • Presentation.Web.Tests(Moq ..)
  • BusinessDomain.Services(DI的商业服务)
  • BusinessDomain.Models(EF Models ..)
  • BusinessDomain.Tests(Moq ..)
  • CrossCutting.Common(常数,资源,异常消息...)
  • Infrastructure.Configuration(IoC的引导程序,ApplicationConfiguration,ContainerExtensions ..)
  • Infrastructure.DataSource(的DbContext,Repositorys ..)
  • Infrastructure.Tests(MOQ ..)