2014-12-02 1 views
0

Странная вещь происходит с EntityFramework. Когда я отлаживаю db.SaveChanges, я вижу, что есть правильные данные, которые будут отправлены в базу данных. Если для поля CurrentFirstName, равного bool, установлено значение true, сохранение выполняется правильно, а данные попадают в базу данных. Если для CurrentFirstName установлено значение false, ничего не происходит, и данные не попадают в базу данных.EntityFramework db.SaveChanges() работает только в том случае, когда Bool True

Объект и хранимые процедуры отображаются правильно. Объект имеет уникальный первичный ключ.

Возможно ли, что как-то «ложь» не правильно переводится на «0» для вставки хранимой процедуры? Любые предложения приветствуются. Спасибо.

public int PK_FirstNameID { get; set; } 
    public string FirstName { get; set; } 
    public bool CurrentFirstName { get; set; } 
    public int fk_DemographicsID { get; set; } 

[HttpPost] 
public PartialViewResult SaveFirstName(DemographicsViewModel model) 
{ 
    if (ModelState.IsValid) 
    { 
     try 
     { 
      int fkid = model.fk_DemographicsID; 
      int pkid = model.PK_FirstNameID; 
      v_FirstNames fn = new v_FirstNames(); 
      fn.fk_DemographicsID = model.fk_DemographicsID; 
      fn.CurrentFirstName = model.CurrentFirstName; 
      fn.FirstName = model.FirstName.ToUpper(); 

      if (pkid > 0) 
      { 
       fn.PK_FirstNameID = model.PK_FirstNameID; 
       unitOfWork.DemographicsFirstNamesRepository.Update(fn); 
      } 
      else 
      { 
       unitOfWork.DemographicsFirstNamesRepository.Insert(fn); 
      } 
      unitOfWork.Save(); 
      var vm = GetDemographicsViewModel(fkid); 
      UpdateDocumentToDemographicsIndex(fn.fk_DemographicsID); 
      if (fn.CurrentFirstName == true) 
      { 
       UpdateDocumentToAccessionIndex(fn.fk_DemographicsID); 
      } 
      return PartialView("_FirstNamesDetail", vm); 
     } 
     catch (DataException ex) 
     { 
      //Log the error (add a variable name after DataException) 
     } 
    } 
    else 
    { 
     // error handling 
    } 
} 
+0

EF не будет отправлен запрос к базе данных, если ничего не изменилось с момента последнего сохранения – reggaeguitar

+0

Ну, со вставкой, все изменилось, правильно? Он должен видеть данные как измененные. Фактически, для вставки с CurrentFirstName установлено значение true. Ошибка при вставке с CurrentFirstName установлена ​​равной false. Я что-то упускаю? – lv2rftak

+0

EF кэширует данные, поэтому если вы что-то измените, а затем измените его, не сохраняя в db, он не отправит запрос – reggaeguitar

ответ

0

Вы отметили запись как измененную?

newContext.Entry(sqlEntry).State = EntityState.Modified; 
+0

У меня есть метод Update. Нужно ли делать то же самое с методом Insert? – lv2rftak

+0

Извините, я имел в виду, что у меня есть этот код в методе Update, но не в методе Insert. – lv2rftak

 Смежные вопросы

  • Нет связанных вопросов^_^