Created
September 14, 2015 15:50
-
-
Save FransBouma/af671cf1279b9bfc794b to your computer and use it in GitHub Desktop.
Generate complex linq queries to project graph of inheritance using entities to DTO object graph
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//------------------------------------------------------------------------------ | |
// <auto-generated>This code was generated by LLBLGen Pro v5.0.</auto-generated> | |
//------------------------------------------------------------------------------ | |
using System; | |
using System.Collections.Generic; | |
using System.Linq; | |
using System.Text; | |
using InheritanceOneReverseEngineering.Linq; | |
using SD.LLBLGen.Pro.ORMSupportClasses; | |
namespace DTOs.Queries | |
{ | |
/// <summary>Static class which contains methods for fetching instances of DTOs.DtoClasses.BoardMember</summary> | |
public static partial class BoardMemberQueries | |
{ | |
/// <summary>Fetches all instances of DTOs.DtoClasses.BoardMember, using the IDataAccessAdapter instance specified.</summary> | |
/// <param name="adapter">The IDataAccessAdapter instance to use</param> | |
/// <returns>IQueryable containing DTOs.DtoClasses.BoardMember instances</returns> | |
public static IQueryable<DTOs.DtoClasses.BoardMember> FetchAll(IDataAccessAdapter adapter) | |
{ | |
return Fetch(adapter, null); | |
} | |
/// <summary>Fetches all instances of DTOs.DtoClasses.BoardMember which match the where clause specified, using the IDataAccessAdapter instance specified.</summary> | |
/// <param name="adapter">The IDataAccessAdapter instance to use</param> | |
/// <param name="baseQueryWhereClause">The where clause expression to apply to the base query on the entity model. Can be null.</param> | |
/// <returns>IQueryable containing DTOs.DtoClasses.BoardMember instances</returns> | |
public static IQueryable<DTOs.DtoClasses.BoardMember> Fetch(IDataAccessAdapter adapter, System.Linq.Expressions.Expression<Func<InheritanceOneReverseEngineering.EntityClasses.BoardMemberEntity, bool>> baseQueryWhereClause) | |
{ | |
var metaData = new LinqMetaData(adapter); | |
IQueryable<InheritanceOneReverseEngineering.EntityClasses.BoardMemberEntity> q = metaData.BoardMember; | |
if(baseQueryWhereClause != null) | |
{ | |
q = q.Where(baseQueryWhereClause); | |
} | |
return Fetch(q); | |
} | |
/// <summary>Fetches all instances of DTOs.DtoClasses.BoardMember projected from the results of the specified baseQuery</summary> | |
/// <returns>IQueryable containing DTOs.DtoClasses.BoardMember instances</returns> | |
public static IQueryable<DTOs.DtoClasses.BoardMember> Fetch(IQueryable<InheritanceOneReverseEngineering.EntityClasses.BoardMemberEntity> baseQuery) | |
{ | |
return baseQuery.Select(p__0 => new DTOs.DtoClasses.BoardMember() | |
{ | |
CompanyCar = new DTOs.DtoClasses.BoardMemberTypes.CompanyCar() | |
{ | |
Brand = p__0.CompanyCar.Brand, | |
CarId = p__0.CompanyCar.CarId, | |
}, | |
CompanyCarId = p__0.CompanyCarId, | |
EmployeeId = p__0.EmployeeId, | |
ManagesDepartmentId = p__0.ManagesDepartmentId, | |
ManagesDepartmentName = p__0.ManagesDepartment.Name, | |
Name = p__0.Name, | |
StartDate = p__0.StartDate, | |
WorksForDepartment = new DTOs.DtoClasses.BoardMemberTypes.WorksForDepartment() | |
{ | |
Employees = p__0.WorksForDepartment.Employees.OfType<InheritanceOneReverseEngineering.EntityClasses.EmployeeEntity>() | |
.Where(p__1 => !(p__1 is InheritanceOneReverseEngineering.EntityClasses.ManagerEntity) && | |
!(p__1 is InheritanceOneReverseEngineering.EntityClasses.ClerkEntity) && | |
!(p__1 is InheritanceOneReverseEngineering.EntityClasses.BoardMemberEntity)) | |
.Select(p__1 => new DTOs.DtoClasses.BoardMemberTypes.WorksForDepartmentTypes.Employee() | |
{ | |
Name = p__1.Name, | |
}) | |
.ProjectionUnion( | |
p__0.WorksForDepartment.Employees.OfType<InheritanceOneReverseEngineering.EntityClasses.ManagerEntity>() | |
.Where(p__1 => !(p__1 is InheritanceOneReverseEngineering.EntityClasses.BoardMemberEntity)) | |
.Select(p__1 => new DTOs.DtoClasses.BoardMemberTypes.WorksForDepartmentTypes.EmployeeManager() | |
{ | |
ManagesDepartment = new DTOs.DtoClasses.BoardMemberTypes.WorksForDepartmentTypes.EmployeeManagerTypes.ManagesDepartment() | |
{ | |
DepartmentId = p__1.ManagesDepartment.DepartmentId, | |
DepartmentType = p__1.ManagesDepartment.DepartmentType, | |
MeetingRoomCode = p__1.ManagesDepartment.MeetingRoomCode, | |
Name = p__1.ManagesDepartment.Name, | |
}, | |
ManagesDepartmentId = p__1.ManagesDepartmentId, | |
})) | |
.ProjectionUnion( | |
p__0.WorksForDepartment.Employees.OfType<InheritanceOneReverseEngineering.EntityClasses.ClerkEntity>() | |
.Select(p__1 => new DTOs.DtoClasses.BoardMemberTypes.WorksForDepartmentTypes.EmployeeClerk() | |
{ | |
JobDescription = p__1.JobDescription, | |
})) | |
.ProjectionUnion( | |
p__0.WorksForDepartment.Employees.OfType<InheritanceOneReverseEngineering.EntityClasses.BoardMemberEntity>() | |
.Select(p__1 => new DTOs.DtoClasses.BoardMemberTypes.WorksForDepartmentTypes.EmployeeBoardMember() | |
{ | |
CompanyCarId = p__1.CompanyCarId, | |
})) | |
.ToList(), | |
Name = p__0.WorksForDepartment.Name, | |
}, | |
WorksForDepartmentId = p__0.WorksForDepartmentId, | |
}); | |
} | |
} | |
} | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
ProjectionUnion is a custom extension method to overcome a limitation of LLBLGen Pro namely that it doesn't support Union queries, so ProjectionUnion is simply a wrapper around IEnumerable.Union(), so it makes sure the union takes place in-memory in the compiled lambda.