Приведение запроса, возвращающего анонимный тип в ObjectQuery - PullRequest
3 голосов
/ 15 марта 2012

Это linq to sql, а не объектная структура

Я пытаюсь вызвать ToStraceString для запроса, который возвращает анонимный тип, но моя приведение к ObjectQuery завершается неудачно.

Есть ли какой-то другой способ привести этот запрос к ObjectQuery, или есть какой-то другой способ получить сгенерированный T-SQL за исключением запуска трассировки SQL Server?

        var junk = db.SiteProducts
                     .Where(p => p.SiteProductId == SiteProductId)
                     .Select(p => new
        {
            p.SiteProductId,
            ItemSku = p.ItemMaster != null ? p.ItemMaster.ItemSku : "",
            p.AdminDisplayName,
            p.CurrentInventory,
            p.IsFreeGift,
            p.SiteDivisionId,
            p.PrimaryParentSiteCategoryId,
            p.UsesVariantAttributes,
            UsesOmsPz = p.ItemMaster != null ? p.ItemMaster.OmsPzTemplateId.HasValue : false,
            p.HasDetailPage,

            div = p.SiteDivision.AdminDisplayName,
            domain = p.Site.PrimaryDomain
        });


        string str = ((System.Data.Objects.ObjectQuery)junk).ToTraceString();

Ответы [ 2 ]

3 голосов
/ 15 марта 2012

Для LINQ to SQL вы можете использовать свойство DataContext.Log или DataContext.GetCommand метод , чтобы получить сгенерированный SQL:

var query = dc.Persons.Take(1);
string generatedSql = dc.GetCommand(query).CommandText;

В этом примере возвращается следующий SQL из базы данных AdventureWorks:

ВЫБРАТЬ ТОП (1) [T0]. [BusinessEntityID], [t0]. [PersonType], [t0]. [NameStyle], [t0]. [Title], [t0]. [FirstName], [t0]. [MiddleName], [t0]. [LastName], [t0]. [Суффикс], [t0]. [EmailPromotion], [T0]. [AdditionalContactInfo], [t0]. [Демография], [t0]. [rowguid] AS [Rowguid], [t0]. [ModifiedDate] ОТ [Персона]. [Персона] AS [t0]

2 голосов
/ 15 марта 2012

ObjectQuery - это тип Entity Framework.

Его нельзя использовать с LINQ to SQL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...