我有一个像这样的查询脚本:
SELECT View1.OrderDate,View1.Email,SUM(View1.TotalPayments)FROM dbo.View1 WHERE(View1.OrderStatus ='已完成') GROUP BY View1.OrderDate,View1.Email HAVING (SUM(View1.TotalPayments)> 75);
有什么方法可以从SQL查询中提取一些关键信息吗?如表名和列名,我有2个问题:
答案 0 :(得分:3)
我认为最好的答案是使用Irony解析器: http://irony.codeplex.com/
Hanselman有一个很好的链接,如何使用它来解析SQL: http://www.hanselman.com/blog/TheWeeklySourceCode59AnOpenSourceTreasureIronyNETLanguageImplementationKit.aspx
我希望这会有所帮助,祝你好运!
答案 1 :(得分:1)
您可以使用某些系统表来获取您要查找的信息。
select p.name ParentTable, r.name ReferencedTable, k.name KeyName
from sys.foreign_keys k
join sys.tables p on k.parent_object_id = p.object_id
join sys.tables r on k.referenced_object_id = r.object_id
根据数据库的一致性,您可以对关键名称进行假设。因此,如果参考表是[用户],您可以假设您正在引用UserId,如果您的表中有多个键,则这不是您正在寻找的答案。
答案 2 :(得分:-1)
您可以在像这样的实体框架中构建动态查询
If(case1)
{
var query = db.x.where(x => x).toList();
}
else
{
var query = db.x.where(y => y).toList()
}