LINQ毫无疑问简化了数据库编程,但是它有缺点吗?内联SQL要求以某种方式与数据库通信,以打开数据库进行注入.内联SQL还必须进行语法检查,构建计划,然后执行,这需要宝贵的周期.存储过程也是伟大的数据库应用程序编程中坚如磐石的标准.我认识的许多程序员使用简化开发的数据层,但不是LINQ的程度.现在是时候放弃SP而去LINQ吗?
LINQ to SQL实际上在数据库中出现了一些令人担忧的性能问题.基本上,它会根据您使用的参数的长度创建多个执行计划.我在博客上发布了一段时间LINQ to SQL可能会导致性能问题.
现在,那是说LINQ没有地方吗?几乎不.LINQ肯定在开发工具包中占有一席之地,就像存储过程一样.最终,您希望在性能绝对必要时使用存储过程,并在任何其他情况下使用ORM工具.
就内联SQL而言,有一些方法可以执行内联SQL,因此计划只构建一次并且永远不会重新编译.大多数ORM也应该关注性能调优的这一方面,并且使用这些方法通常是执行SQL的最安全的方法,因为它会强制您使用参数化查询.
像大多数数据库解决方案一样,正确的答案取决于您尝试解决的问题.如果您喜欢开发速度而不是数据库/应用程序性能,那么使用LINQ或其他DAL/ORM工具是最好的方法.如果您喜欢性能而不是开发,那么使用存储过程和纯数据集将是您最好的选择.LLBLGen甚至提供LINQ到LLBLGen层,因此您可以使用LINQ查询LLBLGen的对象,并让LLBLGen实际处理构建查询并避免LINQ的一些缺陷.