I'm using EF Code First and I have a navigation property called Category that I want eager loaded in every call:
public class Product
{
...
public Category Category { get; set; }
}
To do this I have to include it in every call I'll do on Product
var results = from p in db.Products.Include("Category") select p;
Is there a way to have Category property eager loaded, therefore generation a SQL join, in every call without having to include it every time?
thank you
One simple way would be to define an extension method
static class DbExtensions{
public IQueryable<Product> ProductsWithCategories(this MyContext db) {
return db.Products.Include("Category");
}
}
Which allows you to use
var results = from p in db.ProductsWithCategories() select p;
Not sure if it brings much benefit though...
You can use helper method as proposed by @jeroenh but it will not solve situation where you for example want to load order with all ordered products and their categories. EF doesn't have any automatic eager loading configuration as for example available in Linq-to-sql. You must always use Include
(either directly or by some helper construction).
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With