我正在实施一个大学项目来测试实体框架4.0与NHibernate(最新版本)相比的性能。我正在构建一个简单的事务处理系统来执行此测试。我的实体将是客户,帐户,订单,产品等。在EntityFramework和NHibernate之间切换
我想创建两个单独的DAL;第一个DAL将是EntityFramework,而第二个将是NHibernate。然后,我将创建一个业务逻辑层(BLL),它引用一个DAL或另一个DAL,并使用它来测试。 BLL将包含像'insertNewOrder()','amendExistingOrder()'等方法。我希望我的BLL独立于框架,因此我可以轻松地在每个DAL之间切换。
为了实现这一点,我建议实现一个接口'IContext',它将由每个DAL实现。 'IContext'将包含每个实体的'get()'方法以及'Save()'方法。然后每个DAL将以他们自己特定的方式实现这些方法。 'get()'方法将返回一个IObjectSet,而不是一个ObjectSet。
我将使用T4模板从我的EDM创建POCO实体并将它们移动到单独的项目中。然后每个DAL可以引用相同的一组POCO实体。
然后,我的BLL将创建一个IContext接口的实例,并在该接口上调用方法,而不是创建特定的上下文(ObjectContext或ISession)。
这听起来像一个可行的解决方案吗?我在这个主题上找到的任何文章都包括使用知识库,这是一种我不完全了解的模式,并且如果可能的话,不想实施。我的重点是测试每个平台,而不是构建一个架构正确的应用程序。在这里看到,例如:
我已经部分地基于从“编程实体框架的第二版”,由朱莉娅·勒曼在章这一做法。我对新罕布什尔州和EF(特别是新罕布什尔州)都是新手,所以任何意见或建议,将不胜感激。谢谢。
退房http://ormbattle.net/。将您的结果与它比较可能会很有趣。他们还描述和讨论了测试,这可以给你更多的想法:http://ormbattle.net/index.php/performance-tests.html – 2010-11-08 15:46:39