我目前在为我的项目使用 LINQ to SQL 时遇到问题。这是因为大部分冗长的 SQL 查询(或者更确切地说是视图)都被硬编码到 C# 中,而我们一直在做的就是使用context.Database.SqlQuery<ClassName>(sql, sqlParams)
.
它通常非常有效,但现在我们需要一些更有活力的东西。我们需要插入类似的东西.Where(x => x.Name.Contains("Anonymous")).Take(20)
或其他东西。但是,直接插入前面提到的代码行会导致以下结果:
context.Database.SqlQuery<ClassName>(sql, sqlParams).Where(x => x.Name.Contains("Anonymous")).Take(20);
虽然它确实有效并提取了名称包含“匿名”的前 20 条记录,但性能非常糟糕。它在幕后所做的是从该表中获取所有记录,然后在将它们加载到内存后最终过滤它们。
然后我想问一下,有没有办法将文本 SQL 转换为 LINQ,或者将 LINQ 转换为 SQL,这样我就可以在一个语句中执行我的文本 SQL 和 LINQ。如果您实际上没有解决方案,我也很乐意提出建议......!
编辑:我考虑过使用表达式树,但我不确定它们如何真正适合图片。另外,我考虑过使用数据库视图。但是有这么多的视图(每个表相当多),将所有内容移植到 MS SQL 然后重写所有查询逻辑肯定会很麻烦。