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