TDD和MVC十字路口。 ORM很好地集成了什么?

时间:2011-02-07 17:14:47

标签: asp.net-mvc orm tdd testdrivendesign

我刚刚开始使用MVC世界,我使用了VS 2010中内置的标准MVC模板。我已经连接了几个控制器和视图,现在我需要进入我的数据库

我有一个非常大的现有SQL Server 2005数据库,已由第三方公司定义。我正在尝试使用报告/管理界面来满足我们特定的公司需求。

所以,我想,最初只是从这个数据库中的几个表中提取一些东西。那么......使用MVC 3,哪些ORM工具可以很好地集成?

我也在尝试使用测试驱动设计方法。我不知道如何处理需要插入/更新/删除数据的测试。这是“模拟”发挥作用吗?

2 个答案:

答案 0 :(得分:4)

每个ORM都与Asp.net MVC很好地集成。 asp.net mvc中没有任何东西会使ORM集成变得困难。

您最大的障碍是使用旧数据库。 NHibernate和Entity Framework 4是我唯一知道的两个免费ORM,可以很好地映射到旧数据库。 EF4在映射到遗留数据库方面并不算太差,它在绿色领域开发中效果更好。相比之下,NHibernate几乎可以映射您能想到的任何场景。

测试的简易性主要取决于要使用的数据访问模式。存储库模式很受欢迎,因为它的测试非常友好。不需要嘲笑。

答案 1 :(得分:1)

我强烈建议您使用Castle组件:Windsor,动态代理和活动记录。 您可以基本上模拟数据,因为Active Record创建的模型具有允许您手动或通过动态代理的拦截器操纵它的属性。 汇总存储库和数据服务,以获得对数据访问的更多控制 使用适用的specifition pattern可以轻松进行灵活的查询 在数据服务中使用带有Active Record的Linq,以便能够传递IEnumerable<T>或规范(可能包含或不包含NHibernate的抽象标准并将它们转换为DetachedCriteria或者可能包含{{1}或者一个HQL或任何你封装的东西)作为查询 这样,您可以轻松地模拟数据库访问,并更轻松地重构和测试。