我在这个ASP.NET Web窗体应用程序中使用EF 6.1.3和SQL Server 2014。我在我的.aspx页面设计视图上拖放了一个gridview,并使用智能标记选择我的数据源并自动填充网格。我在gridview上启用了编辑和删除操作,它没有问题,但我想让它使用我写的函数。
这是我尝试删除操作
protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "Delete")
{
int rowIndex = Convert.ToInt32(e.CommandArgument);
Result<Models.UserList> result;
using (ModelOperations.UserList.IUserListOperations dao = new ModelOperations.UserList.UserListOperations())
{
result = dao.removeUser(new Models.UserList()
{
ID = Convert.ToInt32((GridView1.Rows[rowIndex].Cells[1].Text))
});
}
}
}
它实际上有效,但页面出错。我的UserListOperations中的方法有一个try-catch块,但没有捕获异常,因为代码只是工作。
这是由EF
生成的GridView代码<asp:GridView ID="GridView1" runat="server" OnRowCommand="GridView1_RowCommand" AllowSorting="True" AutoGenerateColumns="False" DataKeyNames="UserID" DataSourceID="myEntities">
<Columns>
<asp:CommandField ShowDeleteButton="True" ShowEditButton="True" />
<asp:BoundField DataField="UserID" HeaderText="UserID" ReadOnly="True" SortExpression="UserID" />
<asp:BoundField DataField="UserName" HeaderText="UserName" SortExpression="UserName" />
<asp:BoundField DataField="UserPW" HeaderText="UserPW" SortExpression="UserPW" />
<asp:BoundField DataField="UserType" HeaderText="UserType" SortExpression="UserType" />
</Columns>
</asp:GridView>
这就是错误
存储更新,插入或删除语句会影响意外 行数(0)。自那以后,实体可能已被修改或删除 实体已加载。刷新ObjectStateManager条目。
如果我从文本框中获取值并以这种方式发送值,则没有错误,因此我猜测它是关于自动生成的网格的。