实体框架或SQL

4
在我们公司中,有许多旧的Delphi应用程序,我们想将它们改写为.Net应用程序。这些应用程序非常复杂,因为它们始于15年前,现在仍在扩展。
我是团队中唯一的(真正的).Net开发人员。
现在,部门负责人想使用Entity Framework,因为他读了一些相关资料。
但我没有使用过EF,但我已经创建了自己的框架,基于SQL语句。
我不明白EF如何比SQL语句更易于使用和更强大。
请问有人能说服我为什么我们应该转移到Entity Framework吗?考虑到团队知道SQL,但不是真正的.Net开发人员。
谢谢。

不是答案,而是一个几乎不会出错的建议:询问部门负责人关于此事他读到了什么,对他来说这种框架应该具备什么令人信服的特点。然后评估团队所知道和拥有的是否能够与这些特点竞争。 - Andreas
这不是答案,而是一条注释:对于你来说可能会很困难,因为你必须学习如何使用别人的框架。对于其他开发人员来说,可能也很困难,因为他们将不得不学习你的框架(同时可能还知道如何使用EF)。特别是如果计划在新的.NET应用程序上再工作15年,所有未来的开发人员都必须从头开始学习按照你的方式进行操作。 - Sascha Hennig
3个回答

3

如果你有幸能够从零开始,在一个空旷的草地上 - 无论如何,投资一些时间来了解Entity Framework吧!

它是一个很棒的ORM - 也是一个很好的生产力助手。EF可以帮助你处理80%的情况 - 获取对象,操作它,并将其存储回数据库 - 简直轻而易举!

using(MyDatabaseContext ctx = new MyDatabaseContext())
{
    Customer c1 = ctx.Customers.Find(4711);

    c1.Name = "Acme Inc.";
    // set other properties, if needed......

    ctx.SaveChanges();
}

使用基于SQL的框架就像这样简单吗?对于Delphi开发人员来说学习起来不会很难!Delphi和.NET框架实际上非常相似(嘿!基本上是同一个人创建的.....)从Delphi转到.NET非常容易和自然(我几年前就完成了这一步)- 实际上比老派VB6开发人员要容易得多....请阅读Entity Framework的相关内容 - 从绝对初学者指南开始!EF会处理许多愚蠢和无聊的“胶水代码”,您不再需要亲自编写......此外:使用EF并不意味着您不能再使用SQL - 对于某些任务,例如批量操作,SQL仍然是远远最佳选择。如果需要,在.NET 4中至少可以在性能或其他方面需要时在存储过程中插入它。效果非常好!在MSDN Entity Framework Developer Center可以找到有关Entity Framework的大量信息(白皮书、示例、视频)。

0
即使您已经创建了通用的dal,允许您调用存储过程并获取表、标量、读取器等,我怀疑类将像EF的db上下文对象一样经过测试和成熟。
不要忘记,您可以使用EF调用sql存储过程或使用sql获取数据,而无需在第一天对所有实体进行建模。
我会依赖于db上下文类来编写现代的.net代码,并忘记通过手动管理SqlConnection和SqlCommand以Ado.Net方式直接处理它们。

它只被测试到查询和更新数据的基础层面。现有的代码可能已经被测试到对数据进行有意义的操作。 - Andreas
确切地说,我指的是像其他答案中所示的DbContext优势。 - Davide Piras

0
您部门的负责人似乎很不错。投资学习Entity Framework吧,它是强大、经过测试、功能灵活,而且最重要的是,您仍然可以使用自己的框架。尽管如此,我建议您只使用EF。特别是如果您要为公司未来的.NET开发人员铺平道路,那就使用EF吧。它有很好的文档支持,您可以在不到一天的编码时间内立刻开始使用。此外,如果这些应用程序像您所说的那样被拓展,EF将为MySQL和其他连接器支持(毕竟这是它的优势)铺平道路,而且非常容易实现。短期和长期来看,EF都会给您带来很多好处。您还可以获得EF工具的支持,这是一个巨大的加分项。我自己用ADO.NET做了很长时间,然后转向了DLinq,现在使用EF,我不会再回头了(至少大部分情况下是这样)。微软也在不断改进EF(4.1版本于4月份发布),因此我认为这是一个非常好的选择。它是我们新旗舰产品中数据层的核心,几乎支持MySQL、SQL 2005、2008、Azure和2008 R2等。+++

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接