Обновить таблицу с помощью LINQ

#asp.net #linq

#asp.net #linq

Вопрос:

РЕШАЕМАЯ посмотрите ниже фрагмент кода.

У меня проблема с обновлением таблиц, код не показывает ошибок, но он действует не так, как ожидалось, он не помещает никакой информации в таблицу журнала.

некоторое объяснение, у меня есть таблица с именем User с FK в LogID и таблица с именем Log с PK в LogID, так что это должно быть правильно, в журнале есть столбец с именем TimesLoggedIn и один с именем LastLogedin. и я хочу обновить их соответствующим образом.

         User logid = db.Users.Single(p => p.UserID == loginID);
        logid.Log.LastLogedin= DateTime.UtcNow;

        if (logid.Log.TimesLoggedIn == null)
        {
            logid.Log.TimesLoggedIn = 1;
        }
        else
        {
            logid.Log.TimesLoggedIn = logid.Log.TimesLoggedIn   1;
        }
    db.SubmitChanges();
  

у меня была досадная ошибка в моем коде, у меня

 Response.Redirect("ControlPanel");
  

размещено до того, как я запустил LINQ, а не после.

Комментарии:

1. существует ли соответствующая строка в журнале таблиц? какой ORM вы используете?

2. в столбцах (LastLogedin и TimesLoggedIn ) нет информации, но строка существует, она содержит registeredTime и LogID с данными в них

3. Почему вы создаете нового пользователя в середине этого кода? Похоже, вы ничего с этим не делаете.

4. удалил его, это был мусор от попытки исправить. не имеет значения.

Ответ №1:

Я использую Entity Framework, поэтому я могу ошибаться. Но, возможно, журнал вообще не загружен.

Попробуйте это:

 var options = New DataLoadOptions();
options.LoadWith<Users>(x => x.Log);
db.LoadOptions = options;

// then your code:
User logid = db.Users.Single(p => p.UserID == loginID);
logid.Log.LastLogedin= DateTime.UtcNow;

....
  

Комментарии:

1. Хорошо, я опубликовал другую идею.