нетерпеливая загрузка в WebApi 2 - PullRequest
0 голосов
/ 26 ноября 2018

У меня была проблема с загрузкой некоторой информации из таблиц, связанных с пользовательской таблицей, и после некоторого поиска и помощи от других пользователей на этом форуме я решил пойти с энергичной загрузкой.Это то, что я сделал.Таким образом, в моем методе расширения я изменил эту строку:

 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
                });
        }
    }
}

Я новичок в процессе обучения.Было бы хорошо, если бы у кого-то было время объяснить мне, что происходит!

...