向ObjectQuery返回匿名类型的强制转换查询

本文关键字:转换 查询 类型 ObjectQuery 返回 | 更新日期: 2023-09-27 18:28:00

这是对sql的linq,而不是实体框架

我正试图对返回匿名类型的查询调用ToStraceString,但对ObjectQuery的强制转换失败。

是否有其他方法将此查询强制转换为ObjectQuery,或者是否有其他方式在不启动SQL Server跟踪的情况下获取生成的T-SQL?

        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();

向ObjectQuery返回匿名类型的强制转换查询

对于LINQ to SQL,您可以使用DataContext.Log属性或DataContext.GetCommand方法来获取生成的SQL:

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

此示例从AdventureWorks数据库返回以下SQL:

选择顶部(1)[t0]。[BusinessEntityID],[t0]。[人物类型],[t0]。[NameStyle],[t0]。[标题],[t0]。[名字],[t0]。[MiddleName],[t0]。[姓氏],[t0]。[后缀],[t0]。[EmailPromotion],[t0]。[AdditionalContactInfo],[t0]。[人口统计],[t0]。[rowguid]AS[Rowguid],[t0]。[修改日期]FROM[人]。【人员】AS【t0】

ObjectQuery是一种实体框架类型。

您不能将它与LINQ to SQL一起使用。