这是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();
答案 0 :(得分:3)
对于LINQ to SQL,您可以使用DataContext.Log property或DataContext.GetCommand method来获取生成的SQL:
var query = dc.Persons.Take(1);
string generatedSql = dc.GetCommand(query).CommandText;
此示例从AdventureWorks数据库返回以下SQL:
SELECT TOP(1) [T 0]。[BusinessEntityID] [t0]。[PersonType],[t0]。[NameStyle], [t0]。[标题],[t0]。[FirstName], [t0]。[MiddleName],[t0]。[LastName], [t0]。[后缀],[t0]。[EmailPromotion], [T 0]。[AdditionalContactInfo] [t0]。[人口统计],[t0]。[rowguid] AS [Rowguid],[t0]。[ModifiedDate] FROM [人]。[人] AS [t0]
答案 1 :(得分:2)
ObjectQuery
是实体框架类型。
您不能将它与LINQ to SQL一起使用。