实体框架是否已准备好投入生产?[关闭]


10

我正在研究将要进行的新项目的Entity Framework,并且作为对它的研究的一部分,我向一些行业专业人员询问它是否稳定并且为“现实世界”的实施做好了准备。

在运行中是:

  • 英孚
  • NHibernate
  • DevExpress XPO

我已经在XPO方面拥有丰富的经验,但是我对此并不特别满意。

Answers:


8

是的,但有一些警告:

  • 它得到了Microsoft的完全支持,并拥有一个不断发展的社区-但比其最接近的竞争对手nHibernate更新,它的社区还没有那么成熟。

  • 除了社区还不成熟外,有时还会有EF4可用的功能,但几乎没有记录;或EF4会抛出Google无法帮助您的异常情况。

  • 当按照Microsoft的预期用途使用时,它具有全功能,但以我的经验,很难将其改装到现有系统中。理想情况下,您将在具有100%Microsoft堆栈的未开发环境中使用它。它肯定足够灵活,可以与其他系统混合,但是这样做会大大增加难度。

但是,重申这一要点,它是完整且稳定的,可用于生产。


需要指出的一个关键问题是,ORM的工作原理是将关系范式映射到OO范式。如果这些层中的任何一个都不遵循其各自范例的规则,那么您会感到额外的伤害。

这可以双向进行-如果您精通SQL和OOP的基于关系/集合的范例,那么ORM会让两者像黄油一样混杂。如果您的数据库看起来像是面向对象的,而您的OO代码看起来像是基于记录的,则使用YMMV。


+1:感谢您提供信息。幸运的是,该项目是一个几乎完全在.NET堆栈中的未开发项目(仍然在mysql和sql server之间争论),我将首先对域建模(并希望生成表结构)
Steven Evers

@SnOrfus:FWIW我最近开始在MySQL之上使用EF,并且非常喜欢它。
埃里克·金

5

我们已经在多个生产应用程序中使用了EF。我们还在多个生产应用程序中使用了NHibernate。STW关于EF在“按Microsoft预期使用时”​​效果最好的评论肯定是正确的。对于NHibernate来说也是如此,按照NHibernate团队的预期模式使用时效果最佳。我没有XPO的知识或经验。

我不后悔将NHibernate投入生产。
我不后悔将实体框架投入生产。

使用EF的驱动因素之一是与LINQ的集成。我知道NHibernate在LINQ上也做了很多工作,但还没有时间进行调查。


与两者一起工作是学习如何与两者一起工作的好方法。就像学习VB.NET和C#一样,您会在看到差异时提出问题,而提出这些问题最终将极大地增进您的理解。
STW 2010年

3

我们将EF4.1和Code First方法一起用于我们的Web项目,并且如前所述,如Microsoft所希望的那样保持用法,它将避免您遇到很多问题。

但是,人们可以注意到该系统尚未真正成熟,我之所以这样说是因为:

  1. 行为仍然发生很大变化(从CTP5变为4.1)
  2. LINQ to Entities生成器仅能处理基本类型(Int,String和lot)
  3. 当您尝试合并到现有数据集中时,有些事情不能完全直观地完成
    1. 它不允许您仅为某些dbset创建表定义
    2. 映射字段(例如日期时间)需要使用Google搜索。
  4. 查看其他已知问题

2

我实际上并没有使用完整的堆栈,但是我们在产品中零碎使用了它,尽管我们必须根据需要调整一些片段,但它似乎已经相当成熟。


0

我会这样认为。我正在使用EF4代码优先(CTP)来开发多租户Web应用程序。


+1-是的,我已经在一个团队中做过一些教练,该团队在一个非常大的企业项目中大量使用了它,并且效果很好。那是第一个版本,而不是最新版本。因此,我确信使用最新版本是100%安全的。

我不知道您如何才能100%确信尚未在生产环境中实际运行的任何软件。
杰里米

-1

我认为/希望如此...我正在使用EF 4和新的“模型优先”方法开始一个项目...

对于我所看到的EF 4来说,它的健壮性和功能都比第一个版本要好。。。


-1

是的,但是,应该在更新发布时分配资源来更新和重新测试应用程序(与任何其他框架一样)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.