LINQ to SQL таблицы отчетов в запросе - PullRequest
2 голосов
/ 12 июня 2010

Вот метод, который я хочу написать:

public static IEnumerable<String> GetTableNames(this IQueryable<T> query)
{
    //...
}

, где IQueryable - это запрос linq-to-sql (есть ли более специфический интерфейс, который я должен использовать?).

тогда, если бы у меня был такой запрос

var q = from c in db.Customers
        from p in db.Products
        from cp in db.CustomerProducts
        where c.ID = 3 && cp.CustID == c.ID && p.ID == cp.ProdID
        select new {p.Name, p.Version};
q.GetTableNames();// return ["Customers", "Products", "CustomerProducts"]

, в основном он бы отображал все таблицы, к которым этот запрос обращается в БД, можно выполнить запрос, чтобы понять это тоже(так как это произойдет в любом случае)?какие-нибудь идеи?

(РЕДАКТИРОВАТЬ: извините, если это слишком "дайте мне код!", любые советы, частичные решения или объяснения, почему это невозможно, спасибо! -Люка)

Ответы [ 2 ]

1 голос
/ 12 июня 2010

LINQ-to-SQL позволяет легко захватывать TSQL - просто установите .Log.Проблема в том, что это анализ.Я бы захотел бы захватить TSQL и воспроизвести его в SSMS с SET STATISTICS IO ON - это дает легко анализируемые результаты для каждой таблицы.

0 голосов
/ 12 июня 2010

Вы можете сделать DataContext.GetCommand(query).CommandText, а затем проанализировать, что ищет предложения FROM и JOIN (сложно было бы объединить декартово (запятая)).

...