我正在设计我的项目架构。在我们的团队争论是否使用 Linq。
我在谷歌上浏览了 linq,我发现这个链接给出了 linq 的简短优点和缺点。
从我们项目的角度来看,有 3 个关键点。
- DBML 并发问题
- 小数据集构建查询所需的时间比执行的时间长
- 连接非常慢
我正在谈论 Linq to Entity。所有这些都是与 Linq 相关的问题,根据我的项目要求,这是至关重要的问题,因为我的项目很大。所以性能是非常重要的关键因素。
我们可以解决这些 linq 问题吗?如果是,如何解决?
我正在设计我的项目架构。在我们的团队争论是否使用 Linq。
我在谷歌上浏览了 linq,我发现这个链接给出了 linq 的简短优点和缺点。
从我们项目的角度来看,有 3 个关键点。
我正在谈论 Linq to Entity。所有这些都是与 Linq 相关的问题,根据我的项目要求,这是至关重要的问题,因为我的项目很大。所以性能是非常重要的关键因素。
我们可以解决这些 linq 问题吗?如果是,如何解决?
我阅读了该帖子中的一些回复,我必须同意和不同意其中的很多。我发现使用 linq 的最重要因素是开发时间的快速周转。SQL 查询中不再有拼写错误。不要浪费时间创建复杂的 SQL 查询。linq to entity 和 linq to sql 也有区别。你没有考虑到这一点。我建议你阅读它。提示:去 linq 到实体。
回答您的问题。
我没有将并发问题与 linq(与实体)联系起来。这就是你实现它的方式。如果您需要(批量)更新的原始速度,您可以随时使用 ADO.NET。
如果您仔细构建您的 linq 查询,您将只提取您需要的数据。如果您担心 linq 在构建查询时会影响性能,您可以创建已编译的 linq 查询。
如果您创建一个包含所有关系的适当模型,则连接不会很慢。
与往常一样,这个问题的答案是视情况而定。这些天的方向绝对是亲 ORM。虽然您肯定可以通过存储过程或直接 sql 命令对性能和原子记录更新进行更多控制,但以我个人的经验,这些好处被您花费在维护/更新模式和过程上的时间量所抵消。对于敏捷团队来说,这可能是一个很大的减速。使用强类型 ORM 工具(如 Entity Framework 或 N-Hibernate)的另一个主要好处是,您可以防止代码与数据库模式和存储过程严重偏离。这可能会导致一些非常大的问题。
一般来说,我会在使用 ORM 工具时出错,然后在必要时使用存储过程。
要回答您的具体问题,请使用实体框架作为具体示例:
最终,如果归根结底,您总是可以在需要时使用存储过程。当我有很多需要排他行锁的并发操作时,我会这样做。
我看到 EntityFramework 的一个缺点是有时使用 Postgres 会出现问题,但有非 Visual Studio 工具可以提供帮助。