向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();
对于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一起使用。