【发布时间】:2010-11-08 14:06:12
【问题描述】:
我正在实施一个大学项目来测试 Entity Framework 4.0 与 NHibernate(最新版本)相比的性能。我正在构建一个简单的事务处理系统来进行此测试。我的实体将是诸如客户、帐户、订单、产品之类的东西。
我想创建两个单独的 DAL;第一个 DAL 将是 EntityFramework,而第二个将是 NHibernate。然后,我将创建一个引用一个 DAL 或另一个的业务逻辑层 (BLL),并使用它进行测试。 BLL 将包括“insertNewOrder()”、“amendExistingOrder()”等方法。我希望我的 BLL 独立于框架,以便我可以轻松地在每个 DAL 之间切换。
为了实现这一点,我建议实现一个接口“IContext”,该接口将由每个 DAL 实现。 “IContext”将包括每个实体的“get()”方法以及“Save()”方法。然后,每个 DAL 将以自己特定的方式实现这些方法。 'get()' 方法将返回 IObjectSet,而不是 ObjectSet。
我将使用 T4 模板从我的 EDM 创建 POCO 实体,并将它们移动到单独的项目中。然后每个 DAL 可以引用同一组 POCO 实体。
然后,我的 BLL 将创建 IContext 接口的实例并调用该接口上的方法,而不是创建特定的上下文(ObjectContext 或 ISession)。
这听起来像是一个可行的解决方案吗?我在这个主题上找到的任何文章都包括存储库的使用,这是我不完全理解的模式,并且希望尽可能避免实施。我的重点是测试每个平台,而不是构建架构正确的应用程序。例如,请参见此处:
我将这种方法部分基于 Julia Lerman 的“Programming Entity Framework 2nd Edition”中的一章。我对 NH 和 EF(尤其是 NH)都是新手,因此我将不胜感激任何建议或建议。谢谢。
【问题讨论】:
-
查看ormbattle.net。将您的结果与它进行比较可能会很有趣。他们还描述和讨论了测试,这可以给你更多的想法:ormbattle.net/index.php/performance-tests.html
标签: c# .net nhibernate frameworks entity