Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 是否应该使用Linq?_C#_.net_Linq_Architecture_Linq To Entities - Fatal编程技术网

C# 是否应该使用Linq?

C# 是否应该使用Linq?,c#,.net,linq,architecture,linq-to-entities,C#,.net,Linq,Architecture,Linq To Entities,我正在设计我的项目架构。 在我们的团队中,就是否使用Linq展开了辩论 我在谷歌上浏览了关于linq的内容,我发现了这一点,它简要说明了linq的优点和缺点 从我们项目的角度来看,有3个关键点 DBML并发问题 小数据集构建查询所需的时间比执行查询所需的时间更长 连接非常慢 我说的是Linq到实体。所有这些都是与Linq相关的问题,根据我的项目要求,这些问题非常关键,因为我的项目非常大。 因此,性能是非常重要的关键因素 我们能解决这些linq问题吗?如果是,如何解决 我通读了那篇文章中的一些回复

我正在设计我的项目架构。 在我们的团队中,就是否使用Linq展开了辩论

我在谷歌上浏览了关于linq的内容,我发现了这一点,它简要说明了linq的优点和缺点

从我们项目的角度来看,有3个关键点

  • DBML并发问题
  • 小数据集构建查询所需的时间比执行查询所需的时间更长
  • 连接非常慢
  • 我说的是Linq到实体。所有这些都是与Linq相关的问题,根据我的项目要求,这些问题非常关键,因为我的项目非常大。 因此,性能是非常重要的关键因素


    我们能解决这些linq问题吗?如果是,如何解决

    我通读了那篇文章中的一些回复,其中很多我都同意也不同意。我发现使用linq最重要的因素是开发时间的快速周转。SQL查询中不再出现拼写错误。不浪费时间创建复杂的SQL查询。LINQtoEntities和LINQtoSQL也有区别。你没有考虑过。我建议你仔细阅读一下。提示:转到linq to实体

    回答你的问题

  • 我不会将并发问题与linq(实体)联系起来。这是你如何实现它的。如果需要(批处理)更新的原始速度,则始终可以使用ADO.NET

  • 如果仔细构造linq查询,则只提取所需的数据。如果您担心linq在构造查询时会影响性能,那么可以创建编译的linq查询

  • 如果您创建了一个适当的模型,并且所有的关系都在适当的位置,那么连接不会很慢


  • 和往常一样,答案是这要看情况而定。现在的方向是肯定的。虽然使用存储过程或直接sql命令可以更好地控制性能和原子记录更新,但以我个人的经验,这些好处被维护/更新架构和过程所花费的时间所抵消。对于敏捷团队来说,这可能是一个巨大的减速。使用Entity Framework或N-Hibernate等强类型ORM工具的另一个关键好处是,可以防止代码与数据库模式和存储过程严重偏离。这可能会导致一些非常大的问题

    通常,我会在使用ORM工具时出错,然后在必要时使用存储过程

    要回答您的具体问题,请使用实体框架作为具体示例:

  • 实体框架4有一些工具可以帮助处理。您可以尝试自己解决它,也可以将异常抛出堆栈
  • 这可能是一个微观优化。一般来说,实体框架是非常快的。在遇到这种障碍之前,您更有可能处理I/O问题
  • 如果您使用数据库进行大量往返或延迟加载,那么连接可能会很慢。实体框架还支持,以便在单个查询中完成所有操作
  • 最终,如果归结起来,您可以在需要时始终使用存储过程。当我有很多需要排他行锁的并发操作时,我会这样做


    我在EntityFramework中看到的一个缺点是,有时在使用Postgres时会出现问题,但有非Visual Studio工具可以提供帮助。

    太模糊了。问一个具体的技术问题。@OliverBock其中有什么含糊不清的地方??你不明白什么?你打算用linq转换xml吗?linq到sql?linq到对象?在做出明智的决定之前,有很多因素需要考虑。Linq本身可以用于执行各种各样的操作。对于一个基于理论的项目,我们不能给出一个一般性的建议。@ryadavilli计划使用Linq到sqlIf性能实际上是一个重要因素。如果使用Linq是有用的,您可以尝试几种方法并自己找到答案。就目前而言,这个问题无法回答——任何问题都可以解决,但没有人能够判断某些特定技术是否适合您的项目。