У меня была проблема с загрузкой некоторой информации из таблиц, связанных с пользовательской таблицей, и после некоторого поиска и помощи от других пользователей на этом форуме я решил пойти с энергичной загрузкой.Это то, что я сделал.Таким образом, в моем методе расширения я изменил эту строку:
var LoggedUser = db.Users.Find(userId);
на эту строку:
(это загрузка, насколько я читал)
var LoggedUser = db.Users.Include(a => a.CarGame).Include(a => a.PackManGame).FirstOrDefault(a => a.Id == userId);
Это работает сейчас, но везде, где я читал, говорит отключить ленивую загрузкуОднако все работает нормально, даже если я оставлю это включенным.Насколько я знаю, это не имеет никакого значения.Нет ошибок с или без этой строки в контроллере:
db.Configuration.LazyLoadingEnabled = false;
Так что я предполагаю, что я делаю что-то не так.Но что?Что здесь происходит?
Мой метод расширения:
public static ApplicationUser GetLoggedInUserInDB(this System.Security.Principal.IPrincipal _User)
{
using (var db = new ApplicationDbContext())
{
string userId = _User.Identity.GetUserId();
var LoggedUser = db.Users.Include(a => a.CarGame).Include(a => a.PackManGame).FirstOrDefault(a => a.Id == userId);
// var LoggedUser = db.Users.Find(userId);
return LoggedUser;
}
}
Мой контроллер:
public class MainPageController : ApiController
{
[Route("Personal_Project/Main_Page_Personal_Project/UserUnfo")]
[ResponseType(typeof(string))]
[Authorize]
public IHttpActionResult GetUserInfo()
{
using (var db = new ApplicationDbContext())
{
var LoggedUser = User.GetLoggedInUserInDB();
db.Configuration.LazyLoadingEnabled = false;
return Ok(new UserInfoModel
{
Name = LoggedUser.UserName,
Reputation = LoggedUser.Reputation,
UserLevel = LoggedUser.UserLevel,
Experience = LoggedUser.Experience,
CalculatedPercentage = LoggedUser.CalculatedPercentage,
CarGameBestScore = LoggedUser.CarGame.BestScore,
PackManGameBestScore = LoggedUser.PackManGame.BestScore,
Avatar = LoggedUser.AvatarPicture
});
}
}
}
Я новичок в процессе обучения.Было бы хорошо, если бы у кого-то было время объяснить мне, что происходит!