To query specific month from generated code?

Posts   
 
    
kiamhuh
User
Posts: 3
Joined: 28-Feb-2012
# Posted on: 28-Feb-2012 10:49:41   

Hi guys. I'm totally new to generated code.

I want to add 2 clause in the PredicateExpression so that I can retrieve data which is created in February of 2012. In T-SQL, this is how I wrote it.

WHERE MONTH(DateCreated)=2 and YEAR(DateCreated)=2012

Please share with me how to do that in generated code. Thanks.

daelmo avatar
daelmo
Support Team
Posts: 8245
Joined: 28-Nov-2005
# Posted on: 28-Feb-2012 17:54:52   

A way of doing it is to use Expressions in predicates and DBFunctionCalls. (I assumed that you are using Adapter template set):

var monthField = new EntityField2("MyMonthExp", 
    new DbFunctionCall("MONTH", new object[]{OrderFields.DateCreated}));

var yearField = new EntityField2("MyYearExp", 
    new DbFunctionCall("YEAR", new object[]{OrderFields.DateCreated}));

var filter = new RelationPredicateBucket(monthField == 12 & yearField == 2012);

// fetch...

... or using LINQ2LLBL FunctionMappings:

var adapter = new DataAccessAdapter();
var metaData = new LinqMetaData(adapter);

var results = (from o in metaData.Orders
                    where o.DateCreated.Month == 12 
                         && o.DateCreated.Year == 2012
                    select o).ToList();
David Elizondo | LLBLGen Support Team
kiamhuh
User
Posts: 3
Joined: 28-Feb-2012
# Posted on: 29-Feb-2012 03:02:59   

hi daelmo. How do I insert the filter into the fetch? thanks.

daelmo avatar
daelmo
Support Team
Posts: 8245
Joined: 28-Nov-2005
# Posted on: 29-Feb-2012 06:24:51   

If you are using Adapter, it's like:

var filter = new RelationPredicateBucket();
// add predicates...

// fetch
var orders = new EntityCollection<OrderEntity>();
using (var adapter = new DataAccessAdapter())
{
     adapter.FetchEntityCollection(orders, filter);
}

and for SelfServicing:

var filter = new PredicateExpression();
// add predicates...

// fetch
var orders = new OrderCollection();
using (var adapter = new DataAccessAdapter())
{
     orders.GetMulti(filter);
}
David Elizondo | LLBLGen Support Team
kiamhuh
User
Posts: 3
Joined: 28-Feb-2012
# Posted on: 29-Feb-2012 10:24:32   

Hi daelmo. I use this.

rpbBucket.PredicateExpression.Add(monthField = Month And yearField = Year)

I got one last question. How do I add in Group By? Thanks.

Walaa avatar
Walaa
Support Team
Posts: 14995
Joined: 21-Aug-2005
# Posted on: 29-Feb-2012 11:20:57   

Group By can't be used when fetching entities. It's available when you fetch a TypedList or a DynamicList, which makes sense, because entities are equivalent to database tuples. Not groups.

For more info on how to use GroupBy, please check the Docs