7

有人在这里使用过 Subsonic3 和 Entity Framework,谁能告诉我优缺点?这是我第一次尝试这些。Subsonic 与实体框架一样易于设置。我不确定实体框架是否可以与其他数据库一起使用,因为 SubSonic 确实像 MySql PGsql 等......?我读了这篇文章(http://www.timacheson.com/Blog/2009/jun/entity_framework_vs_subsonic),这足以令人信服地选择实体框架而不是 SubSonic。但我想要第二次开场。

4

2 回答 2

17

嗯,这两个是完全不同的野兽!

Subsonic 3 是一个很好的工具,可以简单轻松地将数据库结构几乎 1:1 映射到对象类,其中每个类都将是底层数据库中表的精确表示(就像 Linq-to-SQL 的情况一样好)。

另一方面,实体框架针对更复杂的场景,您的域或对象模型(您的类)不一定会 1:1 映射到数据库表。这就是为什么 EF 具有 XML 文件三部曲的原因 - 一个描述概念级别(您的域对象),一个描述存储级别(数据库布局),以及这两者之间的映射。

恕我直言,Subsonic 3 和 Linq-to-SQL 非常适合快速、中小型项目,在这些项目中,您的数据库足够灵活,可以根据需要进行更改,并且您可以非常简单地将对象映射到表。EF 确实在大型企业应用程序中大放异彩,您的数据库级别可能是一成不变的,您无法更改它 - 或者即使底层数据库发生更改,您的应用程序也需要“生存”。

在我看来,完全不同的野兽——完全不同的观众。

马克

PS:我想知道 Tim 在这个比较中是否真的使用了 Subsonic 3,以及他到底在做什么。我的直觉是 EF 会是“更大”的开销,因此性能可能会稍差一些(但更灵活,在企业场景中,即使为此牺牲一些性能,这也是物有所值的)

于 2009-07-20T14:21:13.653 回答
3

如果这有帮助,在我的基准测试中,我使用了 Subsonic 2.1 (如前所述)并在中等负载情况下比较了数据访问层(如前所述的方法)。我提供了代码,所以我的测试很容易被复制。

如果您对系统进行加载,在使用时重现 Web 应用程序中的条件,EF 被证明可以提供更好的性能。完整 Web 应用程序的负载测试证实了这一点。在更复杂的测试中,EF 的优化功能(例如延迟加载)可以提供比 Subsonic 更大的性能优势。

如果您比较单个数据访问操作,例如在简单的单元测试中,Subsonic 似乎更快。特别是,亚音速的初始化速度更快。

如果性能是关键考虑因素,我会推荐 Fluent NHibernate 或 Entity Framework。

于 2009-11-26T09:39:01.770 回答