制作一个简单的案例实现.NET中EF的增删查

Posted 爱喝可乐的阿囧

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了制作一个简单的案例实现.NET中EF的增删查相关的知识,希望对你有一定的参考价值。

制作一个简单的案例,使用EF对数据库进行简单操作

创建数据库ChangeDB

Article文章表
Id【主键,自增】(编号)int
Author(作者)nvarchar(50)
Content(内容)nvarchar(50)
Cateid【外键Catelog表的id字段】(类型id)int
Catelog文章类型表
id【主键,自增】(ID)int
Name(类型名称)nvarchar(50)
Comment(类型说明)nvarchar(50)

创建ASP.NET Web程序

添加ADO.NET实体类连接到这个数据库

创建成功后的样子

在这里的实体模型实例是ChangeDBEntities

添加一个Web窗体:WebForm1.aspx

首先设计好页面样式

​
<div>
            //使用table来设计格式
            <table border="1" style="border-collapse:collapse">
                <tr>
                    <td>标题</td>
                    <td>内容</td>
                    <td>作者</td>
                    <td>类型</td>
                    <td>操作</td>
                </tr>
                //用Repeater来展示数据
                <asp:Repeater ID="Repeater1" runat="server" OnItemCommand="Repeater1_ItemCommand">
                    <ItemTemplate>
                        <tr>
                            <td><%# Eval("Title")%></td>
                            <td><%# Eval("Content")%></td>
                            <td><%# Eval("Author")%></td>
                            <td><%# Eval("CatelogName")%></td>
                            //使用LinkButton来实现删除功能
                            <td><asp:LinkButton ID="LinkButton1" runat="server" CommandName="delete" CommandArgument='<%# Eval("Id")%>'>删除</asp:LinkButton></td>
                        </tr>
                    </ItemTemplate>
                </asp:Repeater>
            </table>
            //此处代码添加使用
            <p>标题:<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox></p>
            <p>内容:<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox></p>
            <p>作者:<asp:TextBox ID="TextBox3" runat="server"></asp:TextBox></p>
            //下拉框内容由数据库查询添加到DropDownList里
            <p>类型:<asp:DropDownList ID="DropDownList1" runat="server"></asp:DropDownList></p>
            <p>没有想要的类型?自己添加一个吧</p>
            <p>类型名:<asp:TextBox ID="TextBox4" runat="server"></asp:TextBox></p>
            <p>描述:<asp:TextBox ID="TextBox5" runat="server"></asp:TextBox></p>
            <asp:Button ID="Button1" runat="server" Text="添加" OnClick="Button1_Click" />
        </div>

​

设计完前端样式后就要开始写后台代码了

查询数据绑定到前端页面

首先先写加载事件,第一件事就是要将数据库的数据查出来放在页面上

为了方便后续好查数据,所以定义一个查询数据的方法

public IEnumerable<object> res()
        {
            //将实体数据模型实例化对象
            ChangeDBEntities db = new ChangeDBEntities();
            //用linq查询数据
            var re = from a in db.Article
                     join c in db.Catelog on a.Cateid equals c.Id
                    //将数据存入一个匿名对象里
                     select new { Id=a.Id, Title = a.Title, Content = a.Content, Author = a.Author, CatelogName = c.Name };
            //返回最后查询出来的数据
            return re.ToList();
        }

然后在加载事件中调用这个方法

protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                Repeater1.DataSource = res();
                Repeater1.DataBind();
            }
        }

添加方法

在这里首先实现前面说的从数据库查询将类型绑定到DropDownList1里

在加载事件中

protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                Repeater1.DataSource = res();
                Repeater1.DataBind();
                ChangeDBEntities db = new ChangeDBEntities();
                //查询类型
                var type = db.Catelog.Select(u => u).ToList();
                DropDownList1.DataSource = type;
                DropDownList1.DataTextField = "Name";
                DropDownList1.DataValueField = "Id";
                DropDownList1.DataBind();
                //将第一个选项添加为“无”
                ListItem item = new ListItem();
                item.Text = "无";
                item.Value = "0";
                DropDownList1.Items.Insert(0, item);
            }
        }

下拉框的数据添加完成后就要开始写添加语句了

进入button按钮的点击事件

protected void Button1_Click(object sender, EventArgs e)
        {
            ChangeDBEntities db = new ChangeDBEntities();
            //实例化数据模型里的类
            Article a = new Article();
            //判断选择的类型是不是“无”,如果是“无”就添加一个新的类型,并将数据储存进去
            if (DropDownList1.SelectedValue == "0")
            {
                //给a添加值
                a.Title = TextBox1.Text;
                a.Content = TextBox2.Text;
                a.Author = TextBox3.Text;
                //同时添加主外键两个表数据,先写主键表Catelog里的数据,然后Article外键引用新生成的那个id
                a.Catelog = new Catelog() { Name = TextBox4.Text, Comment = TextBox5.Text };
            }
            //否则就直接添加数据
            else
            {
                //给a添加值
                a.Title = TextBox1.Text;
                a.Content = TextBox2.Text;
                a.Author = TextBox3.Text;
                a.Cateid = int.Parse(DropDownList1.SelectedValue);
            }
            //调用添加的方法,将实例化出来的类:a作为参数给Add方法
            db.Article.Add(a);
            //判断添加是否成功
            if (db.SaveChanges() > 0)
            {
                Response.Write("<script>alert('添加成功')</script>");
            }
        }

接下来是删除

因为删除的LinkButton是在Repeater里的,所以我们要找到Repeater里的Repeater1_ItemCommand事件

首先判断点击的是哪个按钮使用e.CommandName获得前端LinkButton的属性CommandName的值

protected void Repeater1_ItemCommand(object source, RepeaterCommandEventArgs e)
        {
            //实例化数据模型对象
            ChangeDBEntities db = new ChangeDBEntities();
            //判断点进来的是哪个按钮
            if (e.CommandName == "delete")
            {
                //获取前端LinkButton1里的属性CommandArgument的值id
                int id = int.Parse(e.CommandArgument.ToString());
                //根据这个ID查询到一个对象,将这个对象作为参数传给Remove方法
                db.Article.Remove(db.Article.Where(u => u.Id == id).Single());
                //判断是否删除成功
                if (db.SaveChanges() > 0)
                {
                    Response.Write("<script>alert('删除成功')</script>");
                }
            }
        }

以上就是EF增删查的一些方法

以上是关于制作一个简单的案例实现.NET中EF的增删查的主要内容,如果未能解决你的问题,请参考以下文章

制作一个简单的案例实现.NET中EF的增删查

增删查改实现多文件上传, 采用ASP.NET MVC 5 and EF 6

在EF中使用SQL执行简单高效的增删查操作

EF实现增删查改功能

EF 用集合实现 增删查改

#.NET 简单博文案例练习EF,熟练查询