There is no way to modify the generated SQL from EF. If you need more optimal SQL then your best option would be to write your own Stored Procedure and call that instead.
Optimize generated sql query in entity framework?
-
30-07-2022 - |
Pergunta
I'm using SQL Server 2008 and EntityFramework 6 in a MVC4 Application.
I'm using the following code for getting a Content from data base.
Content content = contentBusinessObject.SelectBy(contentPredicate.Expand(),
new List<string>
{
"Tags",
"User",
"Attachments",
"Products",
"ContentEditors",
"ContentEditors.User"
});
[DataObjectMethod(DataObjectMethodType.Select)]
public TEntity SelectBy(Expression<Func<TEntity, bool>> predicate, List<string> includeNavigationProperties = null)
{
if (includeNavigationProperties == null || includeNavigationProperties.Count <= 0)
return DBSet.FirstOrDefault(predicate);
DbQuery<TEntity> query = includeNavigationProperties.Aggregate<string, DbQuery<TEntity>>(DBSet, (current, property) => current.Include(property));
return query.FirstOrDefault(predicate);
}
above code generates the following t-sql
exec sp_executesql N'SELECT
[UnionAll3].[C2] AS [C1],
[UnionAll3].[C3] AS [C2],
[UnionAll3].[C4] AS [C3],
...
[UnionAll3].[C107] AS [C107],
[UnionAll3].[C108] AS [C108],
[UnionAll3].[C109] AS [C109],
[UnionAll3].[C110] AS [C110],
[UnionAll3].[C111] AS [C111],
[UnionAll3].[C112] AS [C112],
[UnionAll3].[C113] AS [C113],
[UnionAll3].[C114] AS [C114],
[UnionAll3].[C115] AS [C115]
FROM (SELECT
[UnionAll2].[C1] AS [C1],
[UnionAll2].[C2] AS [C2],
[UnionAll2].[C3] AS [C3],
[UnionAll2].[C4] AS [C4],
[UnionAll2].[C5] AS [C5],
...
[UnionAll2].[C109] AS [C109],
[UnionAll2].[C110] AS [C110],
[UnionAll2].[C111] AS [C111],
[UnionAll2].[C112] AS [C112],
[UnionAll2].[C113] AS [C113],
[UnionAll2].[C114] AS [C114],
[UnionAll2].[C115] AS [C115]
FROM (SELECT
[UnionAll1].[C1] AS [C1],
[UnionAll1].[Id] AS [C2],
[UnionAll1].[Id1] AS [C3],
...
[UnionAll1].[C49] AS [C102],
[UnionAll1].[C50] AS [C103],
[UnionAll1].[C51] AS [C104],
[UnionAll1].[C52] AS [C105],
[UnionAll1].[C53] AS [C106],
[UnionAll1].[C54] AS [C107],
[UnionAll1].[C55] AS [C108],
[UnionAll1].[C56] AS [C109],
[UnionAll1].[C57] AS [C110],
[UnionAll1].[C58] AS [C111],
[UnionAll1].[C59] AS [C112],
[UnionAll1].[C60] AS [C113],
[UnionAll1].[C61] AS [C114],
[UnionAll1].[C62] AS [C115]
FROM (SELECT
CASE WHEN ([Join2].[ContentId] IS NULL) THEN CAST(NULL AS int) ELSE 1 END AS [C1],
[Limit1].[Id] AS [Id],
[Limit1].[Id] AS [Id1],
[Limit1].[Title] AS [Title],
[Limit1].[Summary] AS [Summary],
[Limit1].[Context] AS [Context],
[Limit1].[ImagePath] AS [ImagePath],
[Limit1].[UserId] AS [UserId],
[Limit1].[VisitNumber] AS [VisitNumber],
...........
[Join2].[Name] AS [Name],
[Join2].[Description] AS [Description],
[Join2].[ImagePath] AS [ImagePath1],
CAST(NULL AS int) AS [C2],
CAST(NULL AS varchar(1)) AS [C3],
CAST(NULL AS varchar(1)) AS [C4],
CAST(NULL AS varchar(1)) AS [C5],
CAST(NULL AS varchar(1)) AS [C6],
CAST(NULL AS varchar(1)) AS [C7],
CAST(NULL AS bigint) AS [C8],
CAST(NULL AS int) AS [C9],
CAST(NULL AS int) AS [C10],
CAST(NULL AS int) AS [C11],
CAST(NULL AS int) AS [C12],
CAST(NULL AS bit) AS [C13],
CAST(NULL AS datetime2) AS [C14],
CAST(NULL AS varchar(1)) AS [C15],
CAST(NULL AS int) AS [C16],
CAST(NULL AS varchar(1)) AS [C17],
CAST(NULL AS varchar(1)) AS [C18],
CAST(NULL AS varchar(1)) AS [C19],
CAST(NULL AS int) AS [C20],
CAST(NULL AS int) AS [C21],
CAST(NULL AS smallint) AS [C22],
CAST(NULL AS int) AS [C23],
CAST(NULL AS datetime2) AS [C24],
CAST(NULL AS bit) AS [C25],
CAST(NULL AS varchar(1)) AS [C26],
CAST(NULL AS int) AS [C27],
CAST(NULL AS int) AS [C28],
CAST(NULL AS int) AS [C29],
CAST(NULL AS int) AS [C30],
CAST(NULL AS bit) AS [C31],
CAST(NULL AS datetime2) AS [C32],
CAST(NULL AS varchar(1)) AS [C33],
CAST(NULL AS int) AS [C34],
CAST(NULL AS varchar(1)) AS [C35],
CAST(NULL AS varchar(1)) AS [C36],
CAST(NULL AS varchar(1)) AS [C37],
CAST(NULL AS varchar(1)) AS [C38],
CAST(NULL AS varchar(1)) AS [C39],
CAST(NULL AS int) AS [C40],
CAST(NULL AS bit) AS [C41],
CAST(NULL AS int) AS [C42],
CAST(NULL AS varchar(1)) AS [C43],
CAST(NULL AS varchar(1)) AS [C44],
CAST(NULL AS varchar(1)) AS [C45],
CAST(NULL AS varchar(1)) AS [C46],
CAST(NULL AS varchar(1)) AS [C47],
CAST(NULL AS datetime2) AS [C48],
CAST(NULL AS varchar(1)) AS [C49],
CAST(NULL AS datetime2) AS [C50],
CAST(NULL AS int) AS [C51],
CAST(NULL AS int) AS [C52],
CAST(NULL AS datetime2) AS [C53],
CAST(NULL AS int) AS [C54],
CAST(NULL AS varchar(1)) AS [C55],
CAST(NULL AS varchar(1)) AS [C56],
CAST(NULL AS varchar(1)) AS [C57],
CAST(NULL AS int) AS [C58],
CAST(NULL AS varchar(1)) AS [C59],
CAST(NULL AS varchar(1)) AS [C60],
CAST(NULL AS varchar(1)) AS [C61],
CAST(NULL AS varchar(1)) AS [C62]
FROM (SELECT TOP (1)
[Extent1].[Id] AS [Id],
[Extent1].[Title] AS [Title],
[Extent1].[Summary] AS [Summary],
[Extent1].[Context] AS [Context],
[Extent1].[Keywords] AS [Keywords],
[Extent1].[ImagePath] AS [ImagePath],
[Extent1].[UserId] AS [UserId],
[Extent1].[VisitNumber] AS [VisitNumber],
[Extent1].[LanguageId] AS [LanguageId],
[Extent1].[ReferenceName] AS [ReferenceName],
.....
[Extent2].[TwitterPage] AS [TwitterPage],
[Extent2].[FaceBookPage] AS [FaceBookPage],
[Extent2].[PersianblogPage] AS [PersianblogPage],
[Extent2].[ProfileVisitedNumber] AS [ProfileVisitedNumber],
[Extent2].[MinSalary] AS [MinSalary],
[Extent2].[Telephone] AS [Telephone],
[Extent2].[Mobile] AS [Mobile],
[Extent2].[ZipCode] AS [ZipCode],
[Extent2].[ProvinceId] AS [ProvinceId],
[Extent2].[City] AS [City],
[Extent2].[Address] AS [Address],
[Extent2].[LastRecoveryPasswordDate] AS [LastRecoveryPasswordDate],
[Extent2].[LastIP] AS [LastIP],
[Extent2].[RegistrationDate] AS [RegistrationDate1],
[Extent2].[PersianRegistrationDate] AS [PersianRegistrationDate1]
FROM [dbo].[Content] AS [Extent1]
INNER JOIN [dbo].[User] AS [Extent2] ON [Extent1].[UserId] = [Extent2].[Id]
WHERE ([Extent1].[Id] = @p__linq__0) AND (@p__linq__0 IS NOT NULL) AND ((([Extent1].[LanguageId] = @p__linq__1) AND ( NOT ([Extent1].[LanguageId] IS NULL OR @p__linq__1 IS NULL))) OR (([Extent1].[LanguageId] IS NULL) AND (@p__linq__1 IS NULL))) AND ((([Extent1].[StatusId] = @p__linq__2) AND ( NOT ([Extent1].[StatusId] IS NULL OR @p__linq__2 IS NULL))) OR (([Extent1].[StatusId] IS NULL) AND (@p__linq__2 IS NULL))) ) AS [Limit1]
LEFT OUTER JOIN (SELECT [Extent3].[ContentId] AS [ContentId], [Extent4].[Id] AS [Id], [Extent4].[Name] AS [Name], [Extent4].[Description] AS [Description], [Extent4].[ImagePath] AS [ImagePath]
FROM [dbo].[TagContent] AS [Extent3]
INNER JOIN [dbo].[Tag] AS [Extent4] ON [Extent4].[Id] = [Extent3].[TagId] ) AS [Join2] ON [Limit1].[Id] = [Join2].[ContentId]
UNION ALL
SELECT
2 AS [C1],
[Limit2].[Id] AS [Id],
[Limit2].[Id] AS [Id1],
[Limit2].[Title] AS [Title],
[Limit2].[Summary] AS [Summary],
[Limit2].[Context] AS [Context],
[Limit2].[ImagePath] AS [ImagePath],
[Limit2].[UserId] AS [UserId],
[Limit2].[VisitNumber] AS [VisitNumber],
[Limit2].[LanguageId] AS [LanguageId],
[Limit2].[ReferenceName] AS [ReferenceName],
[Limit2].[ReferenceLink] AS [ReferenceLink],
.....
[Extent7].[Path] AS [Path],
[Extent7].[Size] AS [Size],
[Extent7].[OrderNumber] AS [OrderNumber],
[Extent7].[GroupNumber] AS [GroupNumber],
[Extent7].[ContentId] AS [ContentId],
[Extent7].[MessageId] AS [MessageId],
[Extent7].[IsDownload] AS [IsDownload],
[Extent7].[RegistrationDate] AS [RegistrationDate2],
[Extent7].[PersianRegistrationDate] AS [PersianRegistrationDate2],
CAST(NULL AS int) AS [C6],
CAST(NULL AS varchar(1)) AS [C7],
CAST(NULL AS varchar(1)) AS [C8],
CAST(NULL AS varchar(1)) AS [C9],
CAST(NULL AS int) AS [C10],
CAST(NULL AS int) AS [C11],
CAST(NULL AS smallint) AS [C12],
CAST(NULL AS int) AS [C13],
CAST(NULL AS datetime2) AS [C14],
CAST(NULL AS bit) AS [C15],
CAST(NULL AS varchar(1)) AS [C16],
CAST(NULL AS int) AS [C17],
CAST(NULL AS int) AS [C18],
CAST(NULL AS int) AS [C19],
CAST(NULL AS int) AS [C20],
CAST(NULL AS bit) AS [C21],
CAST(NULL AS datetime2) AS [C22],
CAST(NULL AS varchar(1)) AS [C23],
CAST(NULL AS int) AS [C24],
CAST(NULL AS varchar(1)) AS [C25],
CAST(NULL AS varchar(1)) AS [C26],
CAST(NULL AS varchar(1)) AS [C27],
CAST(NULL AS varchar(1)) AS [C28],
CAST(NULL AS varchar(1)) AS [C29],
CAST(NULL AS int) AS [C30],
CAST(NULL AS bit) AS [C31],
CAST(NULL AS int) AS [C32],
CAST(NULL AS varchar(1)) AS [C33],
CAST(NULL AS varchar(1)) AS [C34],
CAST(NULL AS varchar(1)) AS [C35],
CAST(NULL AS varchar(1)) AS [C36],
CAST(NULL AS varchar(1)) AS [C37],
CAST(NULL AS datetime2) AS [C38],
CAST(NULL AS varchar(1)) AS [C39],
CAST(NULL AS datetime2) AS [C40],
CAST(NULL AS int) AS [C41],
CAST(NULL AS int) AS [C42],
CAST(NULL AS datetime2) AS [C43],
CAST(NULL AS int) AS [C44],
CAST(NULL AS varchar(1)) AS [C45],
CAST(NULL AS varchar(1)) AS [C46],
CAST(NULL AS varchar(1)) AS [C47],
CAST(NULL AS int) AS [C48],
CAST(NULL AS varchar(1)) AS [C49],
CAST(NULL AS varchar(1)) AS [C50],
CAST(NULL AS varchar(1)) AS [C51],
CAST(NULL AS varchar(1)) AS [C52]
FROM (SELECT TOP (1)
[Extent5].[Id] AS [Id],
[Extent5].[Title] AS [Title],
[Extent5].[Summary] AS [Summary],
[Extent5].[Context] AS [Context],
[Extent5].[Keywords] AS [Keywords],
[Extent5].[ImagePath] AS [ImagePath],
[Extent5].[UserId] AS [UserId],
[Extent5].[VisitNumber] AS [VisitNumber],
[Extent5].[LanguageId] AS [LanguageId],
[Extent5].[ReferenceName] AS [ReferenceName],
[Extent5].[ReferenceLink] AS [ReferenceLink],
[Extent5].[IsSpecial] AS [IsSpecial],
......
[Extent6].[ProfileVisitedNumber] AS [ProfileVisitedNumber],
[Extent6].[MinSalary] AS [MinSalary],
[Extent6].[Telephone] AS [Telephone],
[Extent6].[Mobile] AS [Mobile],
[Extent6].[ZipCode] AS [ZipCode],
[Extent6].[ProvinceId] AS [ProvinceId],
[Extent6].[City] AS [City],
[Extent6].[Address] AS [Address],
[Extent6].[LastRecoveryPasswordDate] AS [LastRecoveryPasswordDate],
[Extent6].[LastIP] AS [LastIP],
[Extent6].[RegistrationDate] AS [RegistrationDate1],
[Extent6].[PersianRegistrationDate] AS [PersianRegistrationDate1]
FROM [dbo].[Content] AS [Extent5]
INNER JOIN [dbo].[User] AS [Extent6] ON [Extent5].[UserId] = [Extent6].[Id]
WHERE ([Extent5].[Id] = @p__linq__0) AND (@p__linq__0 IS NOT NULL) AND ((([Extent5].[LanguageId] = @p__linq__1) AND ( NOT ([Extent5].[LanguageId] IS NULL OR @p__linq__1 IS NULL))) OR (([Extent5].[LanguageId] IS NULL) AND (@p__linq__1 IS NULL))) AND ((([Extent5].[StatusId] = @p__linq__2) AND ( NOT ([Extent5].[StatusId] IS NULL OR @p__linq__2 IS NULL))) OR (([Extent5].[StatusId] IS NULL) AND (@p__linq__2 IS NULL))) ) AS [Limit2]
INNER JOIN [dbo].[Attachment] AS [Extent7] ON [Limit2].[Id] = [Extent7].[ContentId]) AS [UnionAll1]
UNION ALL
SELECT
3 AS [C1],
[Limit3].[Id] AS [Id],
[Limit3].[Id] AS [Id1],
[Limit3].[Title] AS [Title],
[Limit3].[Summary] AS [Summary],
[Limit3].[Context] AS [Context],
[Limit3].[ImagePath] AS [ImagePath],
[Limit3].[UserId] AS [UserId],
[Limit3].[VisitNumber] AS [VisitNumber],
[Limit3].[LanguageId] AS [LanguageId],
[Limit3].[ReferenceName] AS [ReferenceName],
[Limit3].[ReferenceLink] AS [ReferenceLink],
.....
[Limit3].[ZipCode] AS [ZipCode],
[Limit3].[ProvinceId] AS [ProvinceId],
[Limit3].[City] AS [City],
[Limit3].[Address] AS [Address],
[Limit3].[LastIP] AS [LastIP],
[Limit3].[PersianRegistrationDate1] AS [PersianRegistrationDate1],
CAST(NULL AS int) AS [C2],
CAST(NULL AS varchar(1)) AS [C3],
CAST(NULL AS varchar(1)) AS [C4],
CAST(NULL AS varchar(1)) AS [C5],
CAST(NULL AS int) AS [C6],
CAST(NULL AS varchar(1)) AS [C7],
CAST(NULL AS varchar(1)) AS [C8],
CAST(NULL AS varchar(1)) AS [C9],
CAST(NULL AS varchar(1)) AS [C10],
CAST(NULL AS varchar(1)) AS [C11],
CAST(NULL AS bigint) AS [C12],
CAST(NULL AS int) AS [C13],
CAST(NULL AS int) AS [C14],
CAST(NULL AS int) AS [C15],
CAST(NULL AS int) AS [C16],
CAST(NULL AS bit) AS [C17],
CAST(NULL AS datetime2) AS [C18],
CAST(NULL AS varchar(1)) AS [C19],
[Extent10].[Id] AS [Id3],
[Extent10].[Name] AS [Name],
[Extent10].[Description] AS [Description],
[Extent10].[ImagePath] AS [ImagePath1],
[Extent10].[Price] AS [Price],
[Extent10].[ContentId] AS [ContentId],
[Extent10].[OrderNumber] AS [OrderNumber],
[Extent10].[StatusId] AS [StatusId2],
[Extent10].[RegistrationDate] AS [RegistrationDate2],
[Extent10].[IsDeleted] AS [IsDeleted],
[Extent10].[PersianRegistrationDate] AS [PersianRegistrationDate2],
CAST(NULL AS int) AS [C20],
CAST(NULL AS int) AS [C21],
CAST(NULL AS int) AS [C22],
CAST(NULL AS int) AS [C23],
CAST(NULL AS bit) AS [C24],
CAST(NULL AS datetime2) AS [C25],
CAST(NULL AS varchar(1)) AS [C26],
CAST(NULL AS int) AS [C27],
CAST(NULL AS varchar(1)) AS [C28],
CAST(NULL AS varchar(1)) AS [C29],
CAST(NULL AS varchar(1)) AS [C30],
CAST(NULL AS varchar(1)) AS [C31],
CAST(NULL AS varchar(1)) AS [C32],
CAST(NULL AS int) AS [C33],
CAST(NULL AS bit) AS [C34],
CAST(NULL AS int) AS [C35],
CAST(NULL AS varchar(1)) AS [C36],
CAST(NULL AS varchar(1)) AS [C37],
CAST(NULL AS varchar(1)) AS [C38],
CAST(NULL AS varchar(1)) AS [C39],
CAST(NULL AS varchar(1)) AS [C40],
CAST(NULL AS datetime2) AS [C41],
CAST(NULL AS varchar(1)) AS [C42],
CAST(NULL AS datetime2) AS [C43],
CAST(NULL AS int) AS [C44],
CAST(NULL AS int) AS [C45],
CAST(NULL AS datetime2) AS [C46],
CAST(NULL AS int) AS [C47],
CAST(NULL AS varchar(1)) AS [C48],
CAST(NULL AS varchar(1)) AS [C49],
CAST(NULL AS varchar(1)) AS [C50],
CAST(NULL AS int) AS [C51],
CAST(NULL AS varchar(1)) AS [C52],
CAST(NULL AS varchar(1)) AS [C53],
CAST(NULL AS varchar(1)) AS [C54],
CAST(NULL AS varchar(1)) AS [C55]
FROM (SELECT TOP (1)
[Extent8].[Id] AS [Id],
[Extent8].[Title] AS [Title],
[Extent8].[Summary] AS [Summary],
[Extent8].[Context] AS [Context],
[Extent8].[Keywords] AS [Keywords],
[Extent8].[ImagePath] AS [ImagePath],
[Extent8].[UserId] AS [UserId],
....
[Extent9].[ProfileVisitedNumber] AS [ProfileVisitedNumber],
[Extent9].[MinSalary] AS [MinSalary],
[Extent9].[Telephone] AS [Telephone],
[Extent9].[Mobile] AS [Mobile],
[Extent9].[ZipCode] AS [ZipCode],
[Extent9].[ProvinceId] AS [ProvinceId],
[Extent9].[City] AS [City],
[Extent9].[Address] AS [Address],
[Extent9].[LastRecoveryPasswordDate] AS [LastRecoveryPasswordDate],
[Extent9].[LastIP] AS [LastIP],
[Extent9].[RegistrationDate] AS [RegistrationDate1],
[Extent9].[PersianRegistrationDate] AS [PersianRegistrationDate1]
FROM [dbo].[Content] AS [Extent8]
INNER JOIN [dbo].[User] AS [Extent9] ON [Extent8].[UserId] = [Extent9].[Id]
WHERE ([Extent8].[Id] = @p__linq__0) AND (@p__linq__0 IS NOT NULL) AND ((([Extent8].[LanguageId] = @p__linq__1) AND ( NOT ([Extent8].[LanguageId] IS NULL OR @p__linq__1 IS NULL))) OR (([Extent8].[LanguageId] IS NULL) AND (@p__linq__1 IS NULL))) AND ((([Extent8].[StatusId] = @p__linq__2) AND ( NOT ([Extent8].[StatusId] IS NULL OR @p__linq__2 IS NULL))) OR (([Extent8].[StatusId] IS NULL) AND (@p__linq__2 IS NULL))) ) AS [Limit3]
INNER JOIN [dbo].[Product] AS [Extent10] ON [Limit3].[Id] = [Extent10].[ContentId]) AS [UnionAll2]
UNION ALL
SELECT
4 AS [C1],
[Limit4].[Id] AS [Id],
[Limit4].[Id] AS [Id1],
[Limit4].[Title] AS [Title],
[Limit4].[Summary] AS [Summary],
[Limit4].[Context] AS [Context],
[Limit4].[ImagePath] AS [ImagePath],
[Limit4].[UserId] AS [UserId],
[Limit4].[VisitNumber] AS [VisitNumber],
.....
[Limit4].[City] AS [City],
[Limit4].[Address] AS [Address],
[Limit4].[LastIP] AS [LastIP],
[Limit4].[PersianRegistrationDate1] AS [PersianRegistrationDate1],
CAST(NULL AS int) AS [C2],
CAST(NULL AS varchar(1)) AS [C3],
CAST(NULL AS varchar(1)) AS [C4],
CAST(NULL AS varchar(1)) AS [C5],
CAST(NULL AS int) AS [C6],
CAST(NULL AS varchar(1)) AS [C7],
CAST(NULL AS varchar(1)) AS [C8],
....
CAST(NULL AS varchar(1)) AS [C23],
CAST(NULL AS int) AS [C24],
CAST(NULL AS int) AS [C25],
CAST(NULL AS smallint) AS [C26],
CAST(NULL AS int) AS [C27],
CAST(NULL AS datetime2) AS [C28],
CAST(NULL AS bit) AS [C29],
CAST(NULL AS varchar(1)) AS [C30],
[Join9].[Id1] AS [Id3],
[Join9].[Id1] AS [Id4],
...
[Join9].[City] AS [City1],
[Join9].[Address] AS [Address1],
[Join9].[LastIP] AS [LastIP1],
[Join9].[PersianRegistrationDate] AS [PersianRegistrationDate2]
FROM (SELECT TOP (1)
[Extent11].[Id] AS [Id],
[Extent11].[Title] AS [Title],
[Extent11].[Summary] AS [Summary],
[Extent11].[Context] AS [Context],
[Extent11].[Keywords] AS [Keywords],
[Extent11].[ImagePath] AS [ImagePath],
[Extent11].[UserId] AS [UserId],
[Extent11].[VisitNumber] AS [VisitNumber],
[Extent11].[LanguageId] AS [LanguageId],
[Extent11].[ReferenceName] AS [ReferenceName],
[Extent11].[ReferenceLink] AS [ReferenceLink],
[Extent11].[IsSpecial] AS [IsSpecial],
[Extent11].[RegistrationDate] AS [RegistrationDate],
[Extent11].[StatusId] AS [StatusId],
[Extent11].[SubjectId] AS [SubjectId],
[Extent11].[LockCommenting] AS [LockCommenting],
[Extent11].[AllTagsString] AS [AllTagsString],
[Extent11].[OnlyVisibleToMembers] AS [OnlyVisibleToMembers],
[Extent11].[PersianRegistrationDate] AS [PersianRegistrationDate],
[Extent12].[Id] AS [Id1],
[Extent12].[FirstName] AS [FirstName],
[Extent12].[LastName] AS [LastName],
[Extent12].[FullName] AS [FullName],
[Extent12].[Username] AS [Username],
[Extent12].[Password] AS [Password],
[Extent12].[Email] AS [Email],
[Extent12].[RoleId] AS [RoleId],
[Extent12].[IsAdmin] AS [IsAdmin],
[Extent12].[LanguageId] AS [LanguageId1],
[Extent12].[PhotoPath] AS [PhotoPath],
[Extent12].[StatusId] AS [StatusId1],
[Extent12].[LastVisitDate] AS [LastVisitDate],
[Extent12].[AboutUser] AS [AboutUser],
[Extent12].[TwitterPage] AS [TwitterPage],
[Extent12].[FaceBookPage] AS [FaceBookPage],
[Extent12].[PersianblogPage] AS [PersianblogPage],
[Extent12].[ProfileVisitedNumber] AS [ProfileVisitedNumber],
[Extent12].[MinSalary] AS [MinSalary],
[Extent12].[Telephone] AS [Telephone],
[Extent12].[Mobile] AS [Mobile],
[Extent12].[ZipCode] AS [ZipCode],
[Extent12].[ProvinceId] AS [ProvinceId],
[Extent12].[City] AS [City],
[Extent12].[Address] AS [Address],
[Extent12].[LastRecoveryPasswordDate] AS [LastRecoveryPasswordDate],
[Extent12].[LastIP] AS [LastIP],
[Extent12].[RegistrationDate] AS [RegistrationDate1],
[Extent12].[PersianRegistrationDate] AS [PersianRegistrationDate1]
FROM [dbo].[Content] AS [Extent11]
INNER JOIN [dbo].[User] AS [Extent12] ON [Extent11].[UserId] = [Extent12].[Id]
WHERE ([Extent11].[Id] = @p__linq__0) AND (@p__linq__0 IS NOT NULL) AND ((([Extent11].[LanguageId] = @p__linq__1) AND ( NOT ([Extent11].[LanguageId] IS NULL OR @p__linq__1 IS NULL))) OR (([Extent11].[LanguageId] IS NULL) AND (@p__linq__1 IS NULL))) AND ((([Extent11].[StatusId] = @p__linq__2) AND ( NOT ([Extent11].[StatusId] IS NULL OR @p__linq__2 IS NULL))) OR (([Extent11].[StatusId] IS NULL) AND (@p__linq__2 IS NULL))) ) AS [Limit4]
INNER JOIN (SELECT [Extent13].[Id] AS [Id1], [Extent13].[ContentId] AS [ContentId], [Extent13].[UserId] AS [UserId], [Extent13].[IsReadyToPublish] AS [IsReadyToPublish], [Extent13].[EditDate] AS [EditDate], [Extent13].[PersianEditDate] AS [PersianEditDate], [Extent14].[Id] AS [Id2], [Extent14].[FirstName] AS [FirstName], [Extent14].[LastName] AS [LastName], [Extent14].[FullName] AS [FullName], [Extent14].[Username] AS [Username], [Extent14].[Password] AS [Password], [Extent14].[Email] AS [Email], [Extent14].[RoleId] AS [RoleId], [Extent14].[IsAdmin] AS [IsAdmin], [Extent14].[LanguageId] AS [LanguageId], [Extent14].[PhotoPath] AS [PhotoPath], [Extent14].[StatusId] AS [StatusId], [Extent14].[LastVisitDate] AS [LastVisitDate], [Extent14].[AboutUser] AS [AboutUser], [Extent14].[TwitterPage] AS [TwitterPage], [Extent14].[FaceBookPage] AS [FaceBookPage], [Extent14].[PersianblogPage] AS [PersianblogPage], [Extent14].[ProfileVisitedNumber] AS [ProfileVisitedNumber], [Extent14].[MinSalary] AS [MinSalary], [Extent14].[Telephone] AS [Telephone], [Extent14].[Mobile] AS [Mobile], [Extent14].[ZipCode] AS [ZipCode], [Extent14].[ProvinceId] AS [ProvinceId], [Extent14].[City] AS [City], [Extent14].[Address] AS [Address], [Extent14].[LastRecoveryPasswordDate] AS [LastRecoveryPasswordDate], [Extent14].[LastIP] AS [LastIP], [Extent14].[RegistrationDate] AS [RegistrationDate], [Extent14].[PersianRegistrationDate] AS [PersianRegistrationDate]
FROM [dbo].[ContentEditor] AS [Extent13]
INNER JOIN [dbo].[User] AS [Extent14] ON [Extent13].[UserId] = [Extent14].[Id] ) AS [Join9] ON [Limit4].[Id] = [Join9].[ContentId]) AS [UnionAll3]
ORDER BY [UnionAll3].[C3] ASC, [UnionAll3].[C22] ASC, [UnionAll3].[C1] ASC',N'@p__linq__0 int,@p__linq__1 int,@p__linq__2 int',@p__linq__0=2223,@p__linq__1=1,@p__linq__2=2
Is there a way to optimize it? if there is no way, how can we write a optimized store procedure instead of above EF code ?
Solução
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow