I assume you have already included one or more fields from OrderDetails into the Order derived Element. You need this to get OrderDetails into the projection.
I also assume you have manually added a new property in code in the Order derived element class, for the NumberOfOrderLines (in a partial class file, in order not to be overwritten)
So all you need to do is to customize the projection code, inside the OrderDerivedElement (or whatever it is called)Persistence.cs class
specifically inside the available code region, which should look like this:
// __LLBLGENPRO_USER_CODE_REGION_START ProjectionRegion_OrdersDe
// __LLBLGENPRO_USER_CODE_REGION_END
Then you will need to formulate the LinQ query that will fetch the required elements.
Example:
OrdersDePersistence.cs
private static System.Linq.Expressions.Expression<Func<Northwind.EntityClasses.OrderEntity, OrdersDm.DtoClasses.OrdersDe>> CreateProjectionFunc()
{
return p__0 => new OrdersDm.DtoClasses.OrdersDe()
{
OrderDetails = p__0.OrderDetails.Select(p__1 => new OrdersDm.DtoClasses.OrdersDeTypes.OrderDetail()
{
ProductId = p__1.ProductId,
Quantity = p__1.Quantity,
}).ToList(),
OrderId = p__0.OrderId,
// __LLBLGENPRO_USER_CODE_REGION_START ProjectionRegion_OrdersDe
OrderDetailsCount = p__0.OrderDetails.Count
// __LLBLGENPRO_USER_CODE_REGION_END
};
Fetch Code
List<OrdersDe> results = null;
using (var adapter = new DataAccessAdapter())
{
var metaData = new LinqMetaData(adapter);
var q = (from o in metaData.Order
from od in metaData.OrderDetail
where o.OrderId == od.OrderId && o.CustomerId == "ALFKI"
select o)
.ProjectToOrdersDe();
results = q.ToList();
}