В настоящее время я работаю с Entity Framework, и у меня есть вопрос производительности относительно внутренних объединений.
Какой из следующих 2 случаев лучше всего основывается на производительности в целом?
По соображениям простоты этого примера предположим, что для братьев и сестер существует отношение 1: 1.
(1) Внутренние соединения:
EFContext context = new EFContext();
int myId = GetMyOwnId();
Person me = context.People
.Include(p => p.Father)
.Include(p => p.Mother)
.Include(p => p.Brother)
.Include(p => p.Sister)
.Where(p => p.ID == myId);
return me;
(2) Необязательные множественные запросы:
EFContext context = new EFContext();
int myId = GetMyOwnId();
Person me = context.People
.Where(p => p.ID == myId);
if (me.FatherId.HasValue)
me.Father = context.People.Find(me.FatherId);
if (me.MotherId.HasValue)
me.Mother = context.People.Find(me.MotherId);
if (me.BrotherId.HasValue)
me.Brother = context.People.Find(me.BrotherId);
if (me.SisterId.HasValue)
me.Sister = context.People.Find(me.SisterId);
return me;
Так, какой случай лучше для каждой ситуации?
Или один лучше другого для людей без семьи или для людей с отцом, матерью, братом и сестрой?