我目前正在进行的一个项目涉及重构 C# Com 对象,该对象充当某些 Sql 2005 数据库的数据库访问层。
现有代码的作者使用字符串和许多 if 语句手动构建了所有 sql 查询,以构造相当复杂的 sql 语句(约 10 个连接、> 10 个子选择、约 15-25 个 where 条件和 GroupBy)。基表始终是相同的,但连接、条件和分组的结构取决于传递到我的类/方法中的一组参数。
像这样构建 sql 查询确实有效,但它显然不是一个非常优雅的解决方案(而且也很难阅读/理解和维护)...我可以自己编写一个简单的“querybuilder”,但我很确定我不是第一个遇到此类问题的人,因此我的问题是:
- How do you构建您的数据库查询?
- C# 是否提供了一种动态构建查询的简单方法?
我使用 C# 和 Linq 执行类似的操作来根据用户输入过滤日志条目(请参阅条件 Linq 查询 https://stackoverflow.com/questions/11194/conditional-linq-queries):
IQueryable<Log> matches = m_Locator.Logs;
// Users filter
if (usersFilter)
matches = matches.Where(l => l.UserName == comboBoxUsers.Text);
// Severity filter
if (severityFilter)
matches = matches.Where(l => l.Severity == comboBoxSeverity.Text);
Logs = (from log in matches
orderby log.EventTime descending
select log).ToList();
编辑:直到最后一条语句中的 .ToList() 才执行查询。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)