EF随堂笔记分享

1.创建或添加数据库,要保证数据库里有东西

2.打开Visual Studio,创建新的的项目,右键点击解决方案,添加EF模型

如上 建立好实体模型之后就可以干正事了

3.1 增:声明一个EF的上下文

  /// <summary>
        /// 添加文章
        /// </summary>
        /// <param name="article"></param>
        /// <returns></returns>
        public int Add(Article article)
        {
            MyDBEntities db = new MyDBEntities();
            db.Article.Add(article);
            db.Entry<Catelog>(article.Catelog).State = System.Data.Entity.EntityState.Unchanged;
           return db.SaveChanges();
        }
             

3.2  查:查询全部内容

 public class ArticleDAO
    {
        /// <summary>
        /// 查询所有的文章信息
        /// </summary>
        /// <returns></returns>
        public  List<Article> Select()
        {
            MyDBEntities db = new MyDBEntities();
           return  db.Article.Select(a=>a).ToList();
        }

3.3 根据id进行查询

 /// <summary>
        /// 根据id查找文章
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public Article Select(int  id)
        {
            MyDBEntities db = new MyDBEntities();
            return db.Article.Where(p=>p.Id==id).FirstOrDefault();
        }

4 . 添加增查页面

4.1 增加Add.aspx

4.2 代码实现

前端:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Add.aspx.cs" Inherits="WebApplication1.Add" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
    <style  type="text/css">
        .row{
            display:flex;
            flex-direction:row;
            line-height:35px;
        }
        .cols-4{
            flex:0 0 33.3%;
            text-align:right;
        }
        .cols-8{
            flex:0 0 66.7%;
        }
        .control-width{
            width:200px;
        }
    </style>
</head>
<body>
    <form id="form1" runat="server">
        <div>
            <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
            <div class="row">
                <div class="cols-4">标题:</div>
                <div class="cols-8">
                    <asp:TextBox ID="TxtTitle" runat="server" CssClass="control-width"></asp:TextBox>
                </div>
            </div>

             <div class="row">
                <div class="cols-4">作者:</div>
                <div class="cols-8">
                    <asp:TextBox ID="TxtAuthor" runat="server" CssClass="control-width"></asp:TextBox>
                </div>
            </div>

             <div class="row">
                <div class="cols-4">内容:</div>
                <div class="cols-8">
                    <asp:TextBox ID="TxtContent" runat="server" TextMode="MultiLine" CssClass="control-width"></asp:TextBox>
                </div>
            </div>

              <div class="row">
                <div class="cols-4">类别:</div>
                <div class="cols-8">
                    <asp:DropDownList ID="DdlCatelog" runat="server" CssClass="control-width" DataTextField="Name" DataValueField="Id"></asp:DropDownList>
                </div>
            </div>



             <div class="row">
                <div class="cols-4"></div>
                <div class="cols-8">
                    <asp:Button ID="Button1" runat="server" Text="发表文章" OnClick="Button1_Click" />
                </div>
            </div>


        </div>
    </form>
</body>
</html>

后端:

using BLL;
using DataModel;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace WebApplication1
{
    public partial class Add : System.Web.UI.Page
    {
        private CatelogServcie catelogService = new CatelogServcie();
        private ArticleService articleService = new ArticleService();
        protected void Page_Load(object sender, EventArgs e)
        {
            string  message=Request.QueryString["message"];

            if(!string.IsNullOrEmpty(message))
            this.Label1.Text = message;

            if (!IsPostBack)
            {
                this.DdlCatelog.DataSource = catelogService.Select();
                this.DdlCatelog.DataBind();
            }
        }

        protected void Button1_Click(object sender, EventArgs e)
        {

            Article article = new Article();

            article.Title = this.TxtTitle.Text;
            article.Author = this.TxtAuthor.Text;
            article.Content = this.TxtContent.Text;
            article.PushTime = DateTime.Now;
            //article.Catelogid = int.Parse(this.DdlCatelog.SelectedValue);
            article.Catelog = new Catelog() { Id= int.Parse(this.DdlCatelog.SelectedValue) };

            

            try
            {
                int count = articleService.AddArticle(article);
                if (count > 0)
                {
                    Response.Redirect("~/Add.aspx?message=添加成功!");
                }
            }
            catch (Exception ex)
            {

                Response.Redirect("~/Add.aspx?message="+ex.Message);
            }
          

        }
    }
}

总结:

1. 通过持久化技术可以减少访问数据库数据次数,增加应用程序执行速度;

   2. 代码重用性高,能够完成大部分数据库操作; 

   3. 松散耦合,使持久化不依赖于底层数据库和上层业务逻辑实现,更换数据库时只需修改配置文件而不用修改代码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值