我在开发公司,开发中小型基于Web的项目,我们主要使用Microsoft技术,目前我们处于技术选择阶段,我们正在研究ORM,我们需要选择标准ORM对于我们未来的项目,现在我们将选择范围缩小为两个: -
•Nhibernate: -
•EntityFramework: -
该技术分别按以下方法测量: -
我的问题选择针对Nhibernate的实体框架,作为我们公司未来的ORM默认实施,从长远来看,这样的决定有什么缺点和优点?
不要误会我的意思;我知道Nhibernate暂时是正确的答案,但它是不久的将来,甚至远期未来的正确选择,考虑到EntityFramework的快速发展。
我赖以研究的一些资源: -
http://ayende.com/blog/4351/nhibernate-vs-entity-framework-4-0
NHibernate, Entity Framework, active records or linq2sql
Which ORM tool should I use for .Net development
http://blogs.msdn.com/b/adonet/archive/2012/03/22/ef5-beta-2-available-on-nuget.aspx
答案 0 :(得分:9)
我知道Nhibernate暂时是正确的答案,但是 它是不久的将来,甚至是远方的正确选择 未来,考虑到EntityFramework的快速发展。
没人能回答这个问题。我相信即使是ADO.NET团队也会遇到这个问题,因为此时甚至还没有将来会实现的功能的路线图。目前,开发过程主要由Data UserVoice驱动,并且无法知道下个月我们可以预期哪些功能,明年我们可以预期哪些功能以及我们永远不会拥有哪些功能。
没有正确答案。而且你想要做的整个“标准化”过程是错误的。为您当前的问题使用正确的解决方案!为将来必须解决的问题选择单一的“标准”而不知道该问题,并且不知道那时候可用的工具是愚蠢的。
您的整个想法违背了敏捷性和最佳做法。它甚至可以增长到internal frameworks or SW factories。 .NET开发是一个高度动态的领域。今天可以被认为是好的选择可以在明年被弃用,所以不要用“标准”来约束自己。未来可能会有更有趣的选择,或者技术和实践中更有趣的转变(例如NoSql数据库)。
如果您想要长时间的战略解决方案,请使用大型机和COBOL。他们已经证明了自己的一生。
答案 1 :(得分:1)
我建议您在做出决定时,立即专注于NHibernate和EF提供的功能。查看您必须提出的精确要求,并将它们与ORM进行匹配。在上面的问题中,您应该注意到也可以对NHibernate执行linq查询。此外,您已经满足了对二级缓存的需求。如果您正在寻找一个长期灵活的平台,您一定要考虑到它。