Добрый день, работаю с Entity Framework 6 и Asp.net MVC5, есть три сущности: компания, филиал и пользователь.
public class Company
{
public int Id { get; set; }
public string Name { get; set; }
public virtual ICollection<Branch> Branches { get; set; }
}
public class Branch
{
public int Id { get; set; }
public string Name { get; set; }
public int CompanyId { get; set; }
public virtual Company Company { get; set; }
public virtual ICollection<User> Users { get; set; }
}
public class User
{
public int Id { get; set; }
public string Name { get; set; }
public int BranchId { get; set; }
public virtual Branch Branch { get; set; }
}
В коде контроллера мне нужно получить сущность пользователя с информацией по филиалу, которому он принадлежит и компании.
Делаю я это так:
var user = UserManage.Users.Include(b=>b.Branch.Company).FirstOrDefault(u=>u.Id == id);
Далее передаю пользователя в представление. И каждый раз как я в представлении обращаюсь к информации по филиалу или компании , например так:
@Model.Branch.Company.Name
происходит запрос к БД.
Как можно оптимизировать запрос, что бы в контроллере user получал всю информацию сразу и при обращении из представления, не формировались дополнительные запросы?
И вообще, рационален ли такой запрос:
var user = UserManage.Users.Include(b=>b.Branch.Company).FirstOrDefault(u=>u.Id == id);
так как sql код, который формирует EF просто пугает :)
Есть ли смысл разбивать его на несколько простых запросов, например получая сначала пользователя, потом его филиал, а дальше его компанию?
Может есть более простой способ получить от пользователя данные его компании?