【问题标题】:Architecture of MVC application without using entity framework不使用实体框架的 MVC 应用架构
【发布时间】:2013-02-20 06:12:36
【问题描述】:

我是 MVC 应用程序开发的新手。我愿意使用 MVC 开发一个新项目,我寻找了很多适合 MVC 应用程序的架构。 在阅读了许多文章和博客后,我知道存储库模式可以用于此。
根据我在开始实际项目之前的理解,我创建了一个虚拟项目结构,如下所述[不使用 EDMX 文件,项目中的实体框架,定义的自定义 DAL]

我的虚拟应用程序的名称是Repository。我以国家、州和城市关系为例来开发虚拟应用程序:

Repository_DAL_V1 类库 这个库的类如下:
SQLHelper.cs :此类具有执行查询的方法,例如 ExecutenonQuery 等。

Repository_DTO_V1 类库这个库的类如下:
CountryDTO.cs :此类从 CountryModel.cs 继承为 [ CountryDTO:CountryModel ]。这将用于在应用程序的所有层之间移动数据。如果有任何应该在业务中使用的属性,那么将创建它在 DTO 中不在模型中。
CountryDTOMapper.cs : 用于将数据库中的数据以 DataTable 的形式映射到 DTO 对象的集合中。

Repository_Implementation web mvc 项目这是 UI 层。

Repository_IRepositories_V1 类库 这个库的类如下:
ICountryRepository.cs :这是一个声明了 SaveCountry() 等函数的接口。

Repository_Models 类库 这个库的类如下:
CountryModel.cs :该类具有数据库中所有表列的属性。

Repository_Repositories_V1 类库 这个库的类如下:
CountryRepository.cs :这是一个存储库类,定义了 SaveCountry() 等函数。

Repository_ViewModel_V1 类库 这个库的类如下:
CountryViewModel.cs : 这将为屏幕上的 Country View 构建。

以上项目参考详情:

Repository_DTO_V1 有 Repository_Models 的引用。
Repository_IRepositories_V1 有 Repository_DTO_V1,Repository_Models 的引用。
Repository_Repositories_V1 有 Repository_IRepositories_V1,Repository_DAL_V1,Repository_DTO_V1,Repository_Models 的引用。
Repository_ViewModel_V1 有 Repository_Repositories_V1,Repository_IRepositories_V1,Repository_DTO_V1,Repository_Models 的引用。

我需要你们所有人的指导来引导我朝着正确的方向前进。

【问题讨论】:

    标签: asp.net-mvc model-view-controller design-patterns architecture


    【解决方案1】:

    我不明白为什么不使用 EF 与您在分层方面完成的任何其他项目有什么不同。如果您对使用多层感到满意,那么您的事物结构就没有问题。我不知道你的项目是关于什么的,但你应该考虑更好的命名,比如项目名称(存储库)和实现更好地命名为 Web。

    编辑
    我建议您将 Entity Framework 5 与 Code First 一起使用,也就是说,如果您想使用 ORM?

    【讨论】:

    • 感谢您的回复。我用虚拟示例发布了我的想法,这就是为什么名称就像存储库。而且我不想使用 EDMX 文件,因为在这种情况下,如果我刷新 EDMX 文件,我的数据库可能会被更改,那么它可以覆盖我在关联类中所做的更改。
    • 使用 EF,我建议您使用 EF 代码优先方法而不是 EDMX 生成的文件,这样您就可以随意更改模型类。但我的主要观点是,层结构与使用 EF、NHibernate 或纯 SQL 没有太大关系。性能将取决于您编写的 sql 或您如何设置 EF 或 NHibernate,而不是层抽象。
    【解决方案2】:

    我当然和你一样希望错过 EF。

    正如@Dejan.S 所说,您需要的架构取决于项目的规模。

    我会从简单的开始,也许有 3 个项目:

    • 一个网络项目。
    • 控制器用于访问模型和业务逻辑的服务项目。
    • 具有您的模型和数据访问权限的域项目。

    如果您需要分离事物(如 DAL),您仍然可以稍后再做。

    另外,请查看 ServiceStack 的 MVC Power Pack。开箱即用,您可以获得出色的微型 ORM、IoC、缓存、快速序列化程序等。

    【讨论】:

    • 项目的大小非常大,因为在数据库中有些表的行数在 28000 左右,所以性能也要考虑在内。
    • @GauravRajput 项目的大小更多的是表而不是行,我目前正在处理一个项目,该项目有 100 的数千行但只有 5 个表,所以项目明智的是它的小
    • 另外 28k 是一个很小的表体积:)
    • @Dejan.S 我同意你的看法,我只是想向/从数据库中添加有关数据量的更多信息。无论如何,我的数据库由表 385 组成。
    猜你喜欢
    • 2013-09-26
    • 2012-10-18
    • 2011-02-20
    • 1970-01-01
    • 1970-01-01
    • 2011-11-28
    • 2012-05-17
    • 2011-09-13
    • 2011-01-03
    相关资源
    最近更新 更多