Ответы пользователя по тегу SQL Server
  • Entity Framework связь элементов одной таблицы, чяднт?

    @MIsternik Автор вопроса
    Внимание ответ! =)
    Локализовать причину помогло логирование запросов к базе.
    Так как я использую NLog, то это делается так:
    // Добавляем объект логгера в контроллер
    private static Logger logger = LogManager.GetCurrentClassLogger();
    
    // в самом методе, чтобы отслеживать запросы из него, добавляем:
    db.Database.Log = (a) => logger.Info(a);

    Всё, запросы пишутся в файл описанный в настройках NLog

    Основная проблема решилась изменением кода контроллера с
    if (ModelState.IsValid)
    {
        var parentTags = db.Tags.Where(a => ParentTags.Contains(a.Id)).ToList<Tag>();
        tag.ParentTags = parentTags;
        db.Entry(tag).State = EntityState.Modified;
                    
        db.SaveChanges();
    }


    на
    if (ModelState.IsValid)
    {
        var parentTags = db.Tags.Where(a => ParentTags.Contains(a.Id)).ToList<Tag>();
                    
        db.Entry(tag).State = EntityState.Modified;
        // перенесли добавление под предыдущую строку и добавляем так, а не приравниванием.
        parentTags.ForEach(a => tag.ParentTags.Add(a));
        db.SaveChanges();
    }
    Ответ написан
    Комментировать