ASP.NET Entity Framework(EF)

在学习C# ASP.NET进行WEB开发时,想要简单的做一个用户管理系统,初步实现了绑定EF6 的功能,但是无法对数据进行增删改查。
问题相关代码,请勿粘贴截图
运行结果及报错内容
我的解答思路和尝试过的方法
想要达到 页面类似图书馆管理系统,有一个搜索框然后输入得到对应的结果,并且能够进行增删改查(这个增、减EF6自带框架也可以),要有一定的UI设计,发我压缩包。

抱歉大家,这个问题我已经解决了

img


我这个确实找到人解决了,不好意思

把报错的代码发出来。

解决了,结题一下啊

问题既然自己解决了,就结题吧。

看了半天,居然已经解决了。。

你是相同的问题提问了2遍吗

你问题问重了,搞了半天才搞出来。。。

img

img

img

这是个简单的示例,源码怎么发你

你好,
你参考以下例子吧.

<asp:TextBox ID="txtsearch" runat="server" Text=""></asp:TextBox>
<asp:Button ID="btnsearch" runat="server"  Text="Search" OnClick="btnsearch_Click"></asp:Button>
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" DataKeyNames="CustomerId"
OnRowDataBound="OnRowDataBound" OnRowEditing="OnRowEditing" OnRowCancelingEdit="OnRowCancelingEdit"
OnRowUpdating="OnRowUpdating" OnRowDeleting="OnRowDeleting" EmptyDataText="No records has been added.">
<Columns>
    <asp:TemplateField HeaderText="Name" ItemStyle-Width="150">
        <ItemTemplate>
            <asp:Label ID="lblName" runat="server" Text='<%# Eval("Name") %>'></asp:Label>
        </ItemTemplate>
        <EditItemTemplate>
            <asp:TextBox ID="txtName" runat="server" Text='<%# Eval("Name") %>'></asp:TextBox>
        </EditItemTemplate>
    </asp:TemplateField>
    <asp:TemplateField HeaderText="Country" ItemStyle-Width="150">
        <ItemTemplate>
            <asp:Label ID="lblCountry" runat="server" Text='<%# Eval("Country") %>'></asp:Label>
        </ItemTemplate>
        <EditItemTemplate>
            <asp:TextBox ID="txtCountry" runat="server" Text='<%# Eval("Country") %>'></asp:TextBox>
        </EditItemTemplate>
    </asp:TemplateField>
    <asp:CommandField ButtonType="Link" ShowEditButton="true" ShowDeleteButton="true" ItemStyle-Width="150"/>
</Columns>
</asp:GridView>
<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse">
<tr>
    <td style="width: 150px">
        Name:<br />
        <asp:TextBox ID="txtName" runat="server" Width="140" />
    </td>
    <td style="width: 150px">
        Country:<br />
        <asp:TextBox ID="txtCountry" runat="server" Width="140" />
    </td>
    <td style="width: 100px">
        <asp:Button ID="btnAdd" runat="server" Text="Add" OnClick="Insert" />
    </td>
</tr>
</table>

bind:

protected void Page_Load(object sender, EventArgs e)
{
    if (!this.IsPostBack)
    {
        this.BindGrid();
    }
}
 
private void BindGrid()
{
    using (CustomersEntities entities = new CustomersEntities())
    {
        GridView1.DataSource = from customer in entities.Customers
                                select customer;
        GridView1.DataBind();
    }
}

select:

public void btnsearch_Click(object sender, EventArgs e)
{
        GridView1.DataSource = from customer in entities.Customers
                                                 where customer.name==txtsearch.Text                  
                                                 select customer;
        GridView1.DataBind();
}

Insert:

protected void Insert(object sender, EventArgs e)
{
    using (CustomersEntities entities = new CustomersEntities())
    {
        Customer customer = new Customer
        {
            Name = txtName.Text,
            Country = txtCountry.Text
        };
        entities.AddToCustomers(customer);
        entities.SaveChanges();
    }
 
    this.BindGrid();
}

Edit:

protected void OnRowEditing(object sender, GridViewEditEventArgs e)
{
    GridView1.EditIndex = e.NewEditIndex;
    this.BindGrid();
}

update:

protected void OnRowUpdating(object sender, GridViewUpdateEventArgs e)
{
    GridViewRow row = GridView1.Rows[e.RowIndex];
    int customerId = Convert.ToInt32(GridView1.DataKeys[e.RowIndex].Values[0]);
    string name = (row.FindControl("txtName") as TextBox).Text;
    string country = (row.FindControl("txtCountry") as TextBox).Text;
    using (CustomersEntities entities = new CustomersEntities())
    {
        Customer customer = (from c in entities.Customers
                            where c.CustomerId == customerId
                            select c).FirstOrDefault();
        customer.Name = name;
        customer.Country = country;
        entities.SaveChanges();
    }
    GridView1.EditIndex = -1;
    this.BindGrid();
}

Cancel Edit:

protected void OnRowCancelingEdit(object sender, EventArgs e)
{
    GridView1.EditIndex = -1;
    this.BindGrid();
}

Delete:

protected void OnRowDeleting(object sender, GridViewDeleteEventArgs e)
{
    int customerId = Convert.ToInt32(GridView1.DataKeys[e.RowIndex].Values[0]);
    using (CustomersEntities entities = new CustomersEntities())
    {
        Customer customer = (from c in entities.Customers
                                where c.CustomerId == customerId
                                select c).FirstOrDefault();
        entities.DeleteObject(customer);
        entities.SaveChanges();
    }
    this.BindGrid();
}

RowDataBound:

protected void OnRowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow && e.Row.RowIndex != GridView1.EditIndex)
    {
        (e.Row.Cells[2].Controls[2] as LinkButton).Attributes["onclick"] = "return confirm('Do you want to delete this row?');";
    }
}

你要是不会grid view的增删改查,建议你先去看绑定本地数据库是如何操作的. EF和本地数据库本质是一样的,只是数据库不一样.