Reputation: 23
I'm quite new to the EF Core. I always used the EF 6.0 and never had to use an include. Now the question comes up how I should work with these includes. I figured out three possible options and wanted to know which would you prefer to use/which is the fastest and why?
In these samples my intention is to get the details of a club. I want to check if a club with the corresponding id exists and then get the whole information.
Option 1:
using (var context = new TrainingSchedulerContext())
{
var clubs = context.Clubs.Where(c => c.Id == clubId);
if (clubs.Count() == 0)
return NotFound();
var club = clubs.Include(c => c.Memberships)
.Include(c => c.MembershipRequests)
.Include(c => c.TrainingTimes)
.Include(c => c.AdminRoles)
.SingleOrDefault();
}
Option 2:
using (var context = new TrainingSchedulerContext())
{
var club = context.Clubs.Include(c => c.Memberships)
.Include(c => c.MembershipRequests)
.Include(c => c.TrainingTimes)
.Include(c => c.AdminRoles)
.SingleOrDefault(c => c.Id == clubId);
if (club == null)
return NotFound();
}
Option 3:
using (var context = new TrainingSchedulerContext())
{
var club = context.Clubs.SingleOrDefault(c => c.Id == clubId);
if (club == null)
return NotFound();
club = context.Clubs.Include(c => c.Memberships)
.Include(c => c.MembershipRequests)
.Include(c => c.TrainingTimes)
.Include(c => c.AdminRoles)
.SingleOrDefault(c => c.Id == clubId);
}
Upvotes: 1
Views: 691
Reputation: 32072
Let's go from worst to best:
Count
and another one for SingleOrDefault
. The first one is not needed, hence:Upvotes: 2