1. 程式人生 > >用EF書寫增刪改查

用EF書寫增刪改查

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的增刪改查就是這些。