C# Linq是否会使我在后期升级应用程序的成本更高?

C# Linq是否会使我在后期升级应用程序的成本更高?,c#,linq,entity-framework,entity,C#,Linq,Entity Framework,Entity,使用Linq是否会使后期维护/升级项目的成本更高 在此之前,我会使用存储过程,这些过程在代码投入生产后很容易修改 我为一位拥有大量内联sql的遗留应用程序的客户工作。他们花钱将这些存储过程用于需要快速响应时间的应用程序。而且他们对使用Linq Seing的前景并不感到兴奋,因为对他们来说它看起来也像是内联sql Linq等同于内联sql吗?我知道Linq会让我的生活更轻松,但是接下来的一两年呢?只要表达式现在更清晰、更容易理解,那么我很确定它将来会更容易维护。在所有内容都基于过程存储的应用程序中

使用Linq是否会使后期维护/升级项目的成本更高

在此之前,我会使用存储过程,这些过程在代码投入生产后很容易修改

我为一位拥有大量内联sql的遗留应用程序的客户工作。他们花钱将这些存储过程用于需要快速响应时间的应用程序。而且他们对使用Linq Seing的前景并不感到兴奋,因为对他们来说它看起来也像是内联sql


Linq等同于内联sql吗?我知道Linq会让我的生活更轻松,但是接下来的一两年呢?

只要表达式现在更清晰、更容易理解,那么我很确定它将来会更容易维护。

在所有内容都基于过程存储的应用程序中,新功能必须同时编码和编写脚本,这可能是一个痛苦的推出。使用较新的操作方式,通常可能是使用不同的linq表达式公开新函数——创建新存储过程和升级脚本的痛苦消失了。(当然,代码还需要推出.)

在我看来,速度是可以忽略不计的——存储过程肯定会更快,EF也不会总是提供最好的sql,但它可以让生活变得简单:如果我有一个中间层/数据层用于按ID返回客户,并且我想按姓名获取客户;我需要一个新的方法,新的存储过程,脚本来实现这一点,等等。
使用EF时,我可以添加一个新方法。

我发现使用实体框架的唯一缺点是,如果您需要进行紧急更改(比方说),您需要的是代码更改,而不仅仅是修改存储过程。对于我们的环境,对数据库进行脚本更改要比推出新代码容易得多。因此,这在某种程度上取决于您希望在您的环境中使用哪种方法,即推送一个新的.dll,或者推送一个存储过程更改


至于可维护性,我们已经使用实体框架很长时间了,并且没有任何升级/可维护性问题。它易于编写,易于维护,而且如果您正确编写Linq,则易于更新/更改。

将Linq与实体框架一起使用会更慢。无论如何,EF也会缓存查询,所以第一次访问时可能会得到较慢的响应,但执行起来相当快。在web上,比较性能的基准很少。我注意到,实体框架使db编程变得非常简单。也许你现在使用linq获得的时间就是你失去维护它的时间。我觉得ORM真的很有趣。也许您的响应时间较慢,但您可以更快地开发应用程序。这与将记录与db manager系统进行比较相同。第一种更快,但代价是什么?LINQ优于内联SQL,因为它具有类型检查等功能。此外,如果需要大量存储过程、视图,编写存储过程、视图以及所有这些都会很痛苦。添加新数据也是如此。有了EF就只有一行了,在一个数据库中可以多拿几行。如果修改表,则必须在c#应用程序中更改表对象映射。EF会自动完成。我的朋友,这两种方法都是可行的。有些人更喜欢使用数据库,因为他们认为它更易于维护和可靠。我认为一个成熟的ORM也能给你更多。希望有帮助如果你可以选择,使用LinqThanks Andres,我使用的是实体框架,它不像NHibernate那样成熟。我认为最终用户的速度可能会更快,所以存储过程无论如何都会更快?它们是预缓存的一种方式吗?如果这样做会更快吗?+1尽管答案很简单。+1-我认为有时候进行代码更改可能比进行sql更改更痛苦。。。