none
Entity отмена добавление объекта RRS feed

  • Вопрос

  • Есть модель CData.Model и таблица Nds.
    Тут все просто создаем объект.
    Заполняем его значения Name, Value
    Делает добавление его в модель
    CData.Model.Nds.AddObject(Table);
    и
    SaveChanges();
    Все хорошо.
    Но если вдруг в значение Value пишет значение большей размерности чем она возможно в БД. (Value=9999999)
    делаем CData.Model.Nds.AddObject(Table);
    SaveChanges(); уже не срабатывает и правильно. НО как теперь отменить изменения в модели?
    Ведь любой вызов далее SaveChanges() будет пытаться добавить наше невозможное значение

    Пример снизу

    Nds Table = new Nds();
    
                Table.Name = cName.Text;
                Table.Value = (int)cValue.Value;
    
                CData.Model.Nds.AddObject(Table);
                bool err = false;
    
                try
                {
                    CData.Model.SaveChanges();
    //                CData.Model.Refresh(RefreshMode.ClientWins, CData.Model.Nds);
                }
                catch (Exception ex)
                {
                    CLib.CMessage.Error(CData.NameProject, "Ошибка:" + ex.Message + "   " + ex.InnerException.Message);
                    err = true;
                }
                finally
                {
                }

    1 августа 2013 г. 5:26

Ответы

Все ответы

  • Добрый день.

    Сделайте Detach сущности.

    1 августа 2013 г. 5:35
    Отвечающий
  • Ситуация усложнилась.

    Table.SchetF = cSchetF.Text;
    Table.DateF=cDateF.Value;
    
                for (int i = 0; i < dataGridTov.RowCount; i++)
                {
                    Skl_DocumentPrixNom n = new Skl_DocumentPrixNom();
                    
                    n.id_Nomenklatura=(int)dataGridTov.Rows[i].Cells["id_Nomenklatura"].Value ;
                    n.CenaPos=(decimal)dataGridTov.Rows[i].Cells["CenaPos"].Value;
                    
                    Table.Skl_DocumentPrixNom.Add(n);
    
                }
    
    
                if (id == 0)
                {
                    CData.Model.Skl_DocumentPrix.AddObject(Table);
                }
                bool err = false;
    
                try
                {
                    CData.Model.SaveChanges();
                }
                catch (Exception ex)
                {
                    CMessage.Error("Ошибка:" + ex.Message + "   " + ex.InnerException.Message);
                    CData.Model.Detach(Table);
                    err = true;
                }
                finally
                {
                }

    в данном случае Detach не срабатывает для набора данных в Table.Skl_DocumentPrixNom


    20 ноября 2013 г. 6:09
  • Я не вижу, где вы вызываете Detach на сущностях указанной таблицы.

    20 ноября 2013 г. 8:43
    Отвечающий