用EF书写增删改查

版权声明:转载请注明出处:http://blog.csdn.net/Guobeibei_123 https://blog.csdn.net/Guobeibei_123/article/details/82625594

EF增删改查

用EF实现的增删改查,首先是数据库连接首页效果图(以学生列表为例)

 查询:用Repeater创建数据源(图)

HTML的前端页面代码

<div>
            <table style="width: 800px; margin: auto;">
                <tr>
                    <td>学生列表</td>
                </tr>
                <tr style="background-color: darkturquoise;">
                    <td>编号</td>
                    <td>姓名</td>
                    <td>年龄</td>
                    <td>手机</td>
                    <td>邮箱</td>
                    <td>班级</td>
                    <td style="width:100px;">操作</td>
                </tr>
                    <asp:Repeater ID="repert_EFDemo" runat="server" OnItemCommand="repert_EFDemo_ItemCommand">
                        <ItemTemplate>
                <tr>
                            <td><%# Eval("stuid")%></td>
                            <td><%# Eval("stuname")%></td>
                            <td><%# Eval("stuage")%></td>
                            <td><%# Eval("phone")%></td>
                            <td><%# Eval("email")%></td>
                            <td><%# Eval("classname")%></td>
                            <td>
                                <a href='Update.aspx?id=<%# Eval("stuid") %>'>修改</a>
                                <a href="javascript:;" onclick='delStudent(<%# Eval("stuid") %>)'>删除</a>
                                <asp:LinkButton ID="link_denete" runat="server" CommandName="del" CommandArgument='<%# Eval("stuid")%>' OnClientClick="return confirm('你确定要删除吗?')">删除</asp:LinkButton></td>
                    </tr>
                        </ItemTemplate>
                    </asp:Repeater>
                <tr>
                    <td>
                        <asp:Button ID="bnt_add" runat="server" Width="100px" Height="30px" Text="添加" BackColor="#00CC00" OnClick="bnt_add_Click" /></td>
                </tr>
            </table>
            
        </div>

查询与repeat的修改删除的后台代码:

public partial class Index : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                BindStudnet();
            }
        }
        /// <summary>
        /// EF绑定数据源
        /// </summary>
        private void BindStudnet()
        {
           //StudentModel类,新建的数据库的类
            using (EFDemoUserListEntities db = new EFDemoUserListEntities())
            {
                //实例化数据库访问上下文
                List<Student> list = db.Student.Where(s => true).ToList();
                List<StudentModel> listmodel = new List<StudentModel>();
                list.ForEach(s =>
                {
                    var model = new StudentModel()
                    {
                        //查询实体属性
                        stuid = s.stuid,
                        stuname = s.stuname,
                        stuage = s.stuage,
                        phone = s.phone,
                        email = s.email,
                        classid = Convert.ToInt32(s.classid),
                        classname = s.Class.classname
                    };
                    listmodel.Add(model);
                });
                repert_EFDemo.DataSource = listmodel;
                repert_EFDemo.DataBind();
            }
        }

        //repeater删除和修改
        protected void repert_EFDemo_ItemCommand(object source, RepeaterCommandEventArgs e)
        {
            int id = Convert.ToInt32(e.CommandArgument);
            if (e.CommandName == "update")
            {
                Session["stuid"] = id;
                Server.Transfer("Update.aspx");
            }
            if (e.CommandName == "del")
            {
                Student stu = new Student();
                stu.stuid = id;
                EFDemoUserListEntities db = new EFDemoUserListEntities();
                db.Student.Attach(stu);
                db.Student.Remove(stu);
                int i = db.SaveChanges();
                Response.Write("<script>alert('删除成功!')</script>");
                BindStudnet();
            }
        }

        //添加成员的跳转
        protected void bnt_add_Click(object sender, EventArgs e)
        {
            Response.Redirect("Add.aspx");
        }
    }

 StudentModel类:数据库的连接

 public class StudentModel
    {
        public int stuid { get; set; }
        public string stuname { get; set; }
        public int stuage { get; set; }
        public string phone { get; set; }
        public string email { get; set; }
        public int classid { get; set; }
        public string classname { get; set; }
    }

添加的代码: HTML的页面图片与代码(图片)

添加的HTML前端代码:

<div>
        <table style="width:500px; margin:auto;">
            <tr><td><h3>添加新学员</h3></td></tr>
            <tr>
                <td>姓名</td>
                <td>
                    <asp:TextBox ID="txt_name" runat="server"></asp:TextBox></td>
            </tr>
            <tr>
                <td>年龄</td>
                <td>
                    <asp:TextBox ID="txt_age" runat="server"></asp:TextBox></td>
            </tr>
            <tr>
                <td>手机</td>
                <td>
                    <asp:TextBox ID="txt_phone" runat="server"></asp:TextBox></td>
            </tr>
            <tr>
                <td>邮箱</td>
                <td>
                    <asp:TextBox ID="txt_email" runat="server"></asp:TextBox></td>
            </tr>
            <tr>
                <td>班级</td>
                <td>
                        <asp:DropDownList ID="dropclass" runat="server">
                            <asp:ListItem Selected="True" Value="1">.NET班</asp:ListItem>
                            <asp:ListItem Value="2">Android班</asp:ListItem>
                            <asp:ListItem Value="3">JAVA班</asp:ListItem>
                        </asp:DropDownList></td>
            </tr>
            <tr>
                <td></td>
               <td><asp:Button ID="btn_add" runat="server" Text="添加学员" BackColor="#00CC00" OnClick="btn_add_Click" /></td>
            </tr>
        </table>
    </div>

添加的后台代码:

//添加按钮的代码事件 
protected void btn_add_Click(object sender, EventArgs e)
        {
            //实例化数据库访问上下文
            EFDemoUserListEntities db = new EFDemoUserListEntities();
            Student stu = new Student()
            {
                //添加实体的属性
                stuname = txt_name.Text.Trim(),
                stuage = Convert.ToInt32(txt_age.Text.Trim()),
                phone = txt_phone.Text.Trim(),
                email = txt_email.Text.Trim(),
                classid = Convert.ToInt32(dropclass.SelectedValue)
            };
            db.Student.Add(stu);
            //SaveChanges
            int i = db.SaveChanges();
            if (i > 0)
            {
                Page.ClientScript.RegisterStartupScript(this.GetType(), "alert", "<script>alert('添加成功!');location.href='Index.aspx';</script>");
            }
            else
            {
                Response.Write("添加失败!");
            }
        }

 修改的代码部分:HTML页面的图片和代码,图片

修改的HTML页面代码:

<div>
            <table style="width: 800px; margin: auto;">
                <tr>
                    <td><h3>学生列表</h3></td>
                </tr>
                <tr>
                    <td>姓名</td>
                    <td><asp:TextBox ID="txt_name" runat="server"></asp:TextBox></td>
                    </tr>
                <tr>
                    <td>年龄</td>
                    <td><asp:TextBox ID="txt_age" runat="server"></asp:TextBox></td>
                    </tr>
                <tr>
                    <td>手机</td>
                    <td><asp:TextBox ID="txt_phone" runat="server"></asp:TextBox></td>
                    </tr>
                <tr>
                    <td>邮箱</td>
                    <td><asp:TextBox ID="txt_email" runat="server"></asp:TextBox></td>
                    </tr>
                <tr>
                    <td>班级</td>
                    <td>
                        <asp:DropDownList ID="dropclass" runat="server">
                            <asp:ListItem Selected="True" Value="1">.NET班</asp:ListItem>
                            <asp:ListItem Value="2">Android班</asp:ListItem>
                            <asp:ListItem Value="3">JAVA班</asp:ListItem>
                        </asp:DropDownList></td>
                </tr>
                <tr>
                    <td></td>
                    <td>
                    <asp:Button ID="btn_update" runat="server" Text="修改" BackColor="#00CC00" OnClick="btn_update_Click" /></td></tr>
            </table>
    </div>

修改的后台代码:

public partial class Update : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                UpdateList();
            }
        }
       //绑定修改的数据
        private void UpdateList()
        {
            int id = Convert.ToInt32(Request.QueryString["id"]);
            if (id == 0)
            {
                Response.Redirect("Index.aspx");
            }
            //数据库访问上下文
            EFDemoUserListEntities db = new EFDemoUserListEntities();
            var model = db.Student.FirstOrDefault(s => s.stuid == id);
            if (model != null)
            {
                txt_name.Text = model.stuname;
                txt_age.Text =model.stuage.ToString();
                txt_phone.Text = model.phone;
                txt_email.Text = model.email;
                dropclass.SelectedValue =model.classid.ToString();
            }
        }
       //修改的按钮事件
        protected void btn_update_Click(object sender, EventArgs e)
        {
            //定义id
            int id = Convert.ToInt32(Request.QueryString["id"]);
            //实例化数据库访问上下文
            EFDemoUserListEntities db = new EFDemoUserListEntities();
            //根据id查询实体
            var model = db.Student.FirstOrDefault(s => s.stuid == id);
            if (model != null)
            {
                //修改实体的属性
                model.stuname = txt_name.Text.Trim();
                model.stuage = Convert.ToInt32(txt_age.Text.Trim());
                model.phone = txt_phone.Text.Trim();
                model.email = txt_email.Text.Trim();
                model.classid = Convert.ToInt32(dropclass.SelectedValue);
            }
            //SaveChanges
            if (db.SaveChanges() > 0)
            {
                Page.ClientScript.RegisterStartupScript(this.GetType(), "alert", "<script>alert('修改成功!');location.href='Index.aspx';</script>");
            }
            else
            {
                Response.Write("修改失败!");
            }
        }
    }

ajax删除与EF删除:ajax删除,首先是创建一个result提示信息的类,名字可以自己定义,图片如下:在前台的JavaScript的代码是:

然后就是创建一个ajax文件夹,在文件夹里面 添加一个一般处理程序,名字自拟,之后就是代码的书写

/// <summary>
    /// ajaxupdate 的摘要说明
    /// </summary>
    public class ajaxupdate : IHttpHandler
    {

        public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = "text/plain";
            int id = Convert.ToInt32(context.Request.Form["ID"]);
            EFResult result = new EFResult();
            JavaScriptSerializer js = new JavaScriptSerializer();
            //1.实例化数据库访问上下文
            EFDemoUserListEntities db = new EFDemoUserListEntities();
            //2.根据ID查询实体
            var model = db.Student.FirstOrDefault(s => s.stuid == id);
            if (model == null)
            {
                result.IsSuccess = false;
                result.ErrorMessage = "该记录已删除!";
                context.Response.Write(js.Serialize(result));
            }
            //db.Student.Remove(model);
            //3.给实体标记为删除
            db.Entry<Student>(model).State = System.Data.Entity.EntityState.Deleted;
            //4.SaveChanges()
            if (db.SaveChanges() > 0)
            {
                result.IsSuccess = true;
                result.ErrorMessage = "删除成功!";
                context.Response.Write(js.Serialize(result));
            }
            else
            {
                result.IsSuccess = false;
                result.ErrorMessage = "删除失败";
                context.Response.Write(js.Serialize(result));
            }
        }

        public bool IsReusable
        {
            get
            {
                return false;
            }
        }
    }

EF的删除:在上面的查询中repeat的修改和删除中出现过,

 Student stu = new Student();
                stu.stuid = id;
                EFDemoUserListEntities db = new EFDemoUserListEntities();
                db.Student.Attach(stu);
                db.Student.Remove(stu);
                int i = db.SaveChanges();
                Response.Write("<script>alert('删除成功!')</script>");
                BindStudnet();

EF的增删改查就是这些。

猜你喜欢

转载自blog.csdn.net/Guobeibei_123/article/details/82625594