MVC3 应用架构——如何存储数据

Posted

技术标签:

【中文标题】MVC3 应用架构——如何存储数据【英文标题】:MVC3 app architecture - how to store data 【发布时间】:2011-07-15 10:03:17 【问题描述】:

目标:

能够在 MVC3 中快速开发应用程序 在一个地方进行验证(即可能是模型)

我已经有一个数据库了

问题:您目前选择的工具链是什么?

我已经跳出来了:

MvcScaffolding - http://blog.stevensanderson.com/2011/01/13/scaffold-your-aspnet-mvc-3-project-with-the-mvcscaffolding-package/

但是,如果您使用模型优先策略,这需要 EF CTP5

无法弄清楚如何从模型中轻松获取验证(DataAnnotations),例如 [Required] 字段

EF 模型优先 - DataAnnotations 再次看起来很难。 Entity Framework - DataAnnotations

LightSpeed - http://www.mindscapehq.com/ 当前选择的 ORM。

【问题讨论】:

可能想看看 S#arp 架构,尤其是最新的 1.9 版本 - blog.sharparchitecture.net 它支持开箱即用的 NHibernate、Fluent NHibernate 和 NHibernate 验证,还包括用于生成控制器的 T4 模板和模型(可能还有视图 - 不记得了) “使用验证器”这听起来不像是系统的目标,而是实现目标的一种手段。系统的目标通常由某种业务需求驱动。 感谢@Brian 我已对文本进行了更改 将它们全部放在一个地方会很好,但这种情况很少发生,您倾向于在 UI 级别使用验证器(类型验证、范围验证等),除非您有非常简单的域模型,在您的实体上还会发生更复杂的验证(状态 X 的实体不支持值 Y 等)。不幸的是,没有灵丹妙药,它通常取决于您的验证有多少以及有多多样化。您通常希望的最好结果是不要多次重复相同的验证。祝你好运! 【参考方案1】:

这是我的工具链:

带有 Razor 的 ASP.NET MVC 3 用于 UI 部分 NHibernate 与 FluentNHibernate 进行数据访问 FluentValidation.NET 验证规则 AutoMapper 用于业务模型和视图模型之间的映射 MVContrib

我还使用这些框架构建了一个sample project structure。

【讨论】:

很棒的东西达林 - 谢谢。我最终选择了 LightSpeed (Mindscape) 和 MVC3 / Razor。我正在使用 LightSpeed 验证。 @Brian 在上面提出了一个很好的观点,即脚手架很少在大型项目中提供帮助。但是作为起点,它对我来说非常有用。

以上是关于MVC3 应用架构——如何存储数据的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Mvc3 中填充 ListBoxFor?

MVC3 应用程序/服务层/存储库层/POCO 类/EF4 - 问题!

在 Flux 架构中,如何管理存储相同类型数据的存储?

如何在优势数据架构师中编写一个简单的存储过程

数据存储架构技术选型如何做起来?

MVC3 EF 工作单元 + 通用存储库 + Ninject