问题描述
我们在 Web 应用程序(EF 和 LLBlGen)中大量使用 ORM,并且我们有一名 DBA 通过查找导致最多问题的查询来帮助我们提高应用程序的性能。我们有很多访问数据库的 linq 查询,其中一些非常复杂。
有没有办法用一些来自 Linq 查询的标识符来标记生成的 sql,这样如果 DBA 发现一些不好的 sql,我们就可以轻松地找到生成它的 linq 语句。
解决方法
感谢@ErikEj 为我指明了写作方向。对于 EF Core,我可以使用查询标签 https://docs.microsoft.com/en-us/ef/core/querying/tags
对于 LLBLGen,我可以使用它们为 IQueryable 提供的 MarkWithTag() 扩展方法。 https://www.llblgen.com/Documentation/5.5/LLBLGen%20Pro%20RTF/Using%20the%20generated%20code/Linq/gencode_linq_generalusage.htm#query-tagging
Entity Framework 看起来更难,并且没有特定的方法来实现所需的结果,并且需要添加冗余的 select 或 where 子句。 How to "tag" Entity Framework Queries