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