我有一个查询脚本是这样的:
选取(View1.OrderStatus = '已完成')View1.OrderDate,View1.Email,SUM(View1.TotalPayments)FROM dbo.View1 GROUP BY View1.OrderDate,View1.Email HAVING(SUM(View1.TotalPayments)> 75);
有没有我们可以拉一些关键的信息从SQL查询任何方法? 如表名和列名,我有2个问题:
- 我搜索我发现了一些解析器如ANTLR,但我无法找到解释使用该解析器在C#语言的文档。
- 有什么办法,我们可以使用实体框架工作来解析SQL查询? 我的查询是完全动态的,它们在运行时创建
我认为最好的答案将是使用反讽解析器: http://irony.codeplex.com/
Hanselman有一个伟大的链接,如何使用它来解析SQL: http://www.hanselman.com/blog/TheWeeklySourceCode59AnOpenSourceTreasureIronyNETLanguageImplementationKit.aspx
我希望这有助于和好运!
你可以使用一些系统表来获得你正在寻找的信息。
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
这取决于如何一致的数据库是你可以假设一下项名称将是。 因此,如果参照表为[用户]你可以假设你引用的用户ID,如果您有多个钥匙放在桌子这不会是你正在寻找的答案。
你可以建立在实体框架动态查询这样的
If(case1)
{
var query = db.x.where(x => x).toList();
}
else
{
var query = db.x.where(y => y).toList()
}