• Entity Framework 6 学习笔记2 — 增、删、改、显示简单代码示例


    前言

    通过 “Entity Framework 6 学习笔记1 — 介绍和安装方法”文章我相信大家对EF的安装应该没什么问题了,整体安装还是比较简单的,只需要通过Nuge搜索EF然后安装就可以了,这也体现了微软一贯原则–“简单”。

    安装完了我想很多朋友也着急想体验下EF的好处了吧,今天我就通过EF框架对增、删、改操作做一个简单示例。

    创建表

    这里我只是做示例所以就创建了一个表并且字段也很少。下面是sql语句,大家可以直接复制生成表结构。

     
    CREATE TABLE Book
     
    (
     
      Id INT IDENTITY(1,1)  PRIMARY KEY  NOT NULL ,
     
      Name NVARCHAR(1000),
     
      Price  DECIMAL(18, 2)
     
    )

    创建项目

    对于创建项目的流程我这里就不赘述了,为方便操作数据我创建了一个WEB应用程序下图是我的解决方案结构

    2014-09-24_202900

    DAL类库用于放置EF文件。WEB应用程序方便操作数据,下面的3个页面我相信大家都懂的,注意这里和三层构架无关。

    项目创建完成了现在开始创建EF,为方便操作我这里是使用的DB First来操作,对于什么是DB First 后面会有详细的介绍。

    添加EF框架

    1、在DAL类库上新建一个ADO.NET 实体数据模型,如果EF没有安装或者是安装失败的话这里是没有这项的,具体如何安装可以参考“Entity Framework 6 学习笔记1 — 介绍和安装方法”。‘

    在DAL类库上点击右键—–添加—-新建项

    2014-09-24_210949

    2、选择模型内容,这里选择“从数据库生成”就可以了(下图)。

    2014-09-24_211038

    3、连接数据,点击“新建连接”设置数据库服务器名称和用户名、密码。

    2014-09-24_212455 

    这里下面的名称设置成 DBEntities

    4、选择需要使用的表,勾选需要使用到的表就可以

    2014-09-24_212617

    5、设置完成以后点击“完成”就可以了 。完成以后VS会自动打开表关系图,如果有主外键关系这里会很清晰的显示出来。至此EF框架已经添加成功了,下面我们看看EF在项目中的实际应用。

    EF使用

    注意:

    1>在使用之前请在WEB中添加DAL类库的引用 

    2> 如果出现 :类型“System.Data.Entity.DbContext”在未被引用的程序集中定义。必须添加对程序集“EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089” 这个错误,请在WEB层上安装EntityFramework(具体安装方法 “Entity Framework 6 学习笔记1 — 介绍和安装方法”‘)

    3> 在类前面添加引用:using DAL;

    4>复制数据库连接字符串。把DAL层中App.config的数据库连接字符串复制到WEB层的web.config,放到 connectionStrings 节点下即可。不然会提示”在配置文件中找不到XXX的连接字符串“

    1、添加数据

    前台页面代码:

     
     <table>
     
                      <tr>
     
                          <td>书名:</td>
     
                          <td><asp:TextBox ID="txtName" runat="server"></asp:TextBox></td>
     
                      </tr>
     
                      <tr>
     
                          <td>价格:</td>
     
                          <td><asp:TextBox ID="txtPrice" runat="server"></asp:TextBox></td>
     
                      </tr>
     
                     <tr>
     
                         <td></td>
     
                         <td>
     
                             <asp:Button ID="BtnSave" runat="server" Text="保存" OnClick="BtnSave_Click"   />
     
                         </td>
     
                     </tr>
     
                 </table>

    后台处理代码:

     
     protected void BtnSave_Click(object sender, EventArgs e)
     
            {
     
                DBEntities db = new DBEntities();
     
                Book model = new Book();
     
                model.Name = this.txtName.Text;
     
                model.Price = decimal.Parse(this.txtPrice.Text);
     
                db.Book.Add(model);
     
                db.SaveChanges();
     
            }

     

    2、修改数据

    前台页面和添加的一样这里不复制了。

    后台代码:

     
      protected void Page_Load(object sender, EventArgs e)
     
            {
     
                if (!this.IsPostBack)
     
                {
     
                    DBEntities db = new DBEntities();
     
                    //传递过来修改的数据id
     
                    int id = int.Parse(this.Request.QueryString["id"]);
     
                    //通过ID获取对象。条件是lamda表达式,具体会在后面详细介绍。
     
                    Book model = db.Book.SingleOrDefault(b => b.Id == id);
     
                    this.txtName.Text = model.Name;
     
                    this.txtPrice.Text = model.Price.ToString();
     
                }
     
            }
     
     
     
            protected void BtnSave_Click(object sender, EventArgs e)
     
            {
     
                DBEntities db = new DBEntities();
     
                //传递过来修改的数据id
     
                int id =int.Parse( this.Request.QueryString["id"]);
     
                //通过ID获取对象。条件是lamda表达式,具体会在后面详细介绍。
     
                Book model = db.Book.SingleOrDefault(b => b.Id == id);
     
                model.Name = this.txtName.Text;
     
                model.Price = decimal.Parse(this.txtPrice.Text);
     
                db.SaveChanges();
     
            }

      3、显示列表数据和删除数据

    前台页面:

     
       <table>
     
                 <tr>
     
                     <td>Id</td>
     
                     <td>Name</td>
     
                     <td>Price</td>
     
                     <td>操作</td>
     
                 </tr>
     
                <asp:Repeater ID="rptList" runat="server">
     
                    <ItemTemplate>
     
                  <tr>
     
                    <td><%#Eval("id") %></td>
     
                    <td><%#Eval("Name") %></td>
     
                    <td><%#Eval("Price") %></td>
     
                    <td>
     
                    &nbsp; &nbsp;  <a href="Update.aspx?id=<%#Eval("id") %>">修改</a>
     
                         <asp:LinkButton ID="LbtnDeleteItem" CommandArgument='<%#Eval("id") %>'
     
                                OnClick="LbtnDeleteItem_Click"   runat="server">删除</asp:LinkButton>
     
                      </td>
     
                 </tr>
     
                    </ItemTemplate>
     
             </asp:Repeater>
     
             </table>

    后台代码:

     
        protected void Page_Load(object sender, EventArgs e)
     
            {
     
                if (!this.IsPostBack)
     
                {
     
                    //绑定列表数据
     
                    DBEntities db = new DBEntities();
     
                    List<Book> list = db.Book.Where(b => true).ToList();
     
                    this.rptList.DataSource = list;
     
                    this.rptList.DataBind();
     
                }
     
            }
     
     
     
            /// <summary>
     
            /// 删除操作
     
            /// </summary>
     
            /// <param name="sender"></param>
     
            /// <param name="e"></param>
     
            protected void LbtnDeleteItem_Click(object sender, EventArgs e)
     
            {
     
                    DBEntities db = new DBEntities();
     
                    LinkButton lbDeleteItem = sender as LinkButton;
     
                    int id = int.Parse(lbDeleteItem.CommandArgument);
     
                    Book model = db.Book.SingleOrDefault(b => b.Id == id);
     
                    db.Book.Remove(model);
     
                    db.SaveChanges();
     
            }

    总结

    到此简单的EF增、删、改、显示就已经完成了,通过上面的代码来看,EF使用起来还是挺方便的。EF将底层数据库操作做了很好的封装,使程序员更专注于上层业务的实现,而不需要过多重复的编写底层操作数据库。当然做了很好的封装使程序和数据库中间多出了一层,在使用性能比ADO.NET也就要稍差一些。为简化代码很多地方都没有做数据验证,在实际项目中这样做是不可取的。

    以上只是个人的一点学习心得,如有不正之处望见谅。

  • 相关阅读:
    开放个人电脑端口[Windows]
    mysql局域网服务搭建
    JS数据分组[JSON]
    网站缓存【我只是单纯的保存网站!】
    JS生成数字加减乘法验证码
    【http反向代理】多个域名指向同一个ip的不同网站解决方法
    JQuery获取ID含有特殊字符的DOM元素
    java.lang.NoClassDefFoundError: org/apache/commons/collections4/ListValuedMap
    大型网站技术架构,6网站的伸缩性架构之分布式缓存集群的伸缩性设计
    大型网站技术架构,6网站的伸缩性架构之应用服务器集群的伸缩性设计
  • 原文地址:https://www.cnblogs.com/qq260250932/p/4946951.html
Copyright © 2020-2023  润新知