【发布时间】:2011-12-31 23:25:27
【问题描述】:
我正在创建一个通用函数,其函数定义为:
public static List<T> Func_IEnumerable<T>(this IEnumerable<T> q, ObjectContext dc, string CacheId)
和一个功能
public static List<T> Func_IQueryable<T>(this IQueryable<T> q, ObjectContext dc, string CacheId)
问题是我想找出 Ienumerable 或 IQueryable 查询中引用的表名、过程名、函数名和/或视图名
Linq 框架可以吗
如果不是,那么我们可以将 IEnumerable 转换为 System.Data.Objects.ObjectQuery,最后使用 ToTraceString 得到纯 SQL。
现在我们可以从 Pure Sql 中获取对象名称了。
Sql Server 是否有一些函数可以做同样的事情,如果没有,那么我应该如何解析它以获得所需的结果。
谢谢,
感谢任何帮助。
【问题讨论】:
-
这里似乎涉及两个部分:遍历查询以查找所有引用的实体,并从相应的实体中提取信息。两者听起来都不是简单的问题。你能不能只看映射/“模型”,或者使用 SQL Server 分析?
-
为什么要获取表名/函数名?
-
@ Merlyn Morgan-Graham 我想在 ASP.NET(通知服务)中实现 SqlCacheDepenedency。我将传递要缓存的查询,然后在这个函数中,我将创建所有引用对象的 SqlCacheDependencies。现在对于 SqlCacheDepenedency,我们需要一个 SqlCommand。现在我可以使用纯 sql 或对象查询创建 SqlCommand 来跟踪字符串
-
@Eranga 我想在 ASP.NET(通知服务)中实现 SqlCacheDepenedency。我将传递要缓存的查询,然后在这个函数中,我将创建所有引用对象的 SqlCacheDependencies。现在对于 SqlCacheDepenedency,我们需要一个 SqlCommand。现在我可以使用纯 sql 或对象查询创建 SqlCommand 来跟踪字符串
标签: c# asp.net sql-server linq entity-framework-4