c # DataContext.SubmitChanges () не обновляет базу данных - PullRequest
1 голос
/ 22 марта 2011

Может кто-нибудь объяснить, почему следующий код не может обновить базу данных или что еще я могу сделать для устранения неполадок?

// *********************************
// People Updates
// *********************************
// In Engr and SoE
EmplIDs = InputList.GetPeopleIds(InputType.Engr | InputType.SoE);       // retrieve IDs in tables Engr and SoE
Engr = DB.GetEngrByIds(EmplIDs);                                        // retrieve objects from Engr
SoE = DB.GetSoEByIds(EmplIDs);                                          // retrieve objects from SoE
Batch.Update(SoE, Engr);                                                // update SoE with Engr data
DB.Save(SoE);                                                           // persist


// Inside DB repository
public void Save(List<SoE_People> people) {
    ChangeSet cs = dc.GetChangeSet();
    foreach (SoE_People person in people.Where(p => cs.Updates.Contains(p))) {
        person.LastUpdate = DateTime.Now;
    }

    dc.SubmitChanges();
}

Я проверил следующее:

  • people.Count ~ 2500, cs.Updates.Count ~ 200
  • dc.GetChangeSet.Updates.Count = 0 после вызова SubmitChanges ()
  • все обновления объекта people верны.Они видны в локальном окне через людей и cs.Updates [x]
  • исключение не выдается dc.SubmitChanges ()
  • установка dc.Log = Console.Out не показывает SQL дляSubmitChanges ()
  • предыдущий раздел кода, который вставляет новые записи через dc.InsertAllOnSubmit (), работает нормально -> нет проблем с правами на запись.
  • ручная вырезка и вставка данных в таблицу SoE_Peopleработает -> нет проблем с внешним ключом.

Ответы [ 4 ]

1 голос
/ 22 марта 2011

Даже не глядя на логику, изложенную выше, вот несколько рекомендаций:

  • Поместите все в попытку / ловлю.Откуда вы знаете, что не генерируется исключение?
  • dc.SaveChanges () возвращает целое число записей, которые были CRUDed.Захватите возвращаемое значение и проверьте его.
0 голосов
/ 02 апреля 2019

Может быть, это не код, это таблица базы данных. У меня была проблема с обновлением таблицы с использованием SubmitChanges (). Я исправил проблему с помощью , присвоив таблице первичный ключ .

0 голосов
/ 22 марта 2011

Я не знаком с DataContext (не использую его), но я добавлю это туда.

Если это похоже на SqlDataAdapter, вы написали / определили текст SQL для вставки илиобновлять свои записи?

0 голосов
/ 22 марта 2011

Возможно, вы переопределили обновление SoE_People в текстовом данных. Должно быть это .ExecuteDynamicUpdate (instance).

Посмотрите, может быть, вы это прокомментировали / удалили.

Вы можете посмотреть здесь, если не понимаете, что я имею в виду: Проверка правильности вставки / обновления / удаления пользовательского объекта .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...