Entity Framework, хранимые процедуры, ASP.NET GridView - вставка пустой строки - PullRequest
0 голосов
/ 11 сентября 2009

Я хочу добавить пустую строку в мою сетку.

<asp:TemplateField>
<ItemTemplate>
    <asp:ImageButton id="Insert" runat="server" CausesValidation="false"
    CommandName="Insert" OnClick="GridViewInsert" 
    ImageUrl="~/Images/Grid/Insert.gif" />

В событии GridViewInsert:

Award_Status_List list = new Award_Status_List();
    list.Award_Status_Code = " ";
    list.Award_Status_Desc = " ";
    list.Is_Active = false;
    list.Job_User = " ";
    list.Job_Name = " ";
    list.Job_Date = DateTime.Now;
    _entity.AddToAward_Status_List(list);
    _entity.SaveChanges();
    GridView2.DataBind();

При сохранении изменений я получаю эту ошибку:

System.Data.OptimisticConcurrencyException не был обработан кодом пользователя Сообщение = "Оператор сохранения, вставки или удаления магазина затронул неожиданное количество строк (0). Возможно, объекты были изменены или удалены с момента загрузки объектов. Обновите записи ObjectStateManager." Источник = "System.Data.Entity" Трассировки стека: в System.Data.Mapping.Update.Internal.UpdateTranslator.Update (IEntityStateManager stateManager, адаптер IEntityAdapter) в System.Data.EntityClient.EntityAdapter.Update (IEntityStateManager entityCache) в System.Data.Objects.ObjectContext.SaveChanges (Boolean acceptChangesDuringSave) в System.Data.Objects.ObjectContext.SaveChanges () в Default1.GridViewInsert (отправитель объекта, EventArgs e) в c: \ Documents and Settings \ mranganathan \ Мои документы \ Visual Studio 2008 \ WebSites \ Accounting \ Default1.aspx.cs: строка 68 в System.Web.UI.WebControls.ImageButton.OnClick (ImageClickEventArgs e) в System.Web.UI.WebControls.ImageButton.RaisePostBackEvent (String eventArgument) в System.Web.UI.WebControls.ImageButton.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent (String eventArgument) в System.Web.UI.Page.RaisePostBackEvent (IPostBackEventHandler sourceControl, String eventArgument) в System.Web.UI.Page.RaisePostBackEvent (NameValueCollection postData) в System.Web.UI.Page.ProcessRequestMain (логическое значение includeStagesBeforeAsyncPoint, логическое значение includeStagesAfterAsyncPoint)

Ответы [ 3 ]

1 голос
/ 07 мая 2010

Оператор хранения, вставки или удаления затронул неожиданное количество строк (0). Объекты могут быть изменены или удалены с момента загрузки объектов. Обновите записи ObjectStateManager. Это исключение сообщает, что ни одна строка не была обновлена. В моем случае это произошло потому, что я забыл добавить идентификатор поля таблицы. А Entity Framework просто не знал, какие записи обновлять.

0 голосов
/ 24 августа 2010

Убедитесь, что типы данных в полях таблиц соответствуют требованиям, указанным в документации SQLite ( Типы данных в SQLite версии 3 - 2.2 Примеры имен сходства ).

0 голосов
/ 04 октября 2009

У меня нет доступа ко всему вашему коду, но похоже, что происходит что-то похожее на следующее:

  • Объект создан в памяти
  • Объект сохраняется в базе данных, и одно из полей изменяется.
  • Изменение сделано в объекте в памяти без обновления его из базы данных
  • Попробуйте сохранить изменения

Тогда вы получите вышеуказанную ошибку.

Вам нужно сохранить изменения перед привязкой данных?

...