整体操作流程如下:
1、创建完整SQL Server数据库和表
2、引用ADO.NET实体数据模型
3、创建EF项目
4、编辑DAL类
5、编辑BLL类
6、编写页面代码
7、编写视图后层代码
8、添加界面后台代码
9、运程序,修改bug,运行成功
一、新建数据库,新建两个表

二、设置两个表的主键和外键,操作图如下



三、创建项目,搭建三层架构

四、在Model层引用ADO.NET实体数据模型
右键Model,选择添加,选择新建项目在弹出来的窗体中选择数据或者Data,在选择ADO.NET实体数据模型。选择新建连接选择来自数据库的EF设计器,选择你所需要的数据库,选择你所需要的显示的表。点击确认即可完成。

五、编写DAL类,编写增删查改,首先编写查
1、查询数据
public List<Article> Select()
{
MyDBEntities db = new MyDBEntities();
/*var result = from article in db.Article
select article;
return result.ToList();*/
//方法查询函数
return db.Article.Select(p => p).ToList();
}
2、根据ID查询
public Article Select(int id)
{
MyDBEntities db = new MyDBEntities();
var result =(from article in db.Article
where article.Id==id
select article).Single();
return result;
}
3、添加文章
public int Add(Article article)
{
MyDBEntities db = new MyDBEntities();
db.Article.Add(article);
//写入数据库,保存写入成功的记录条数
int count = db.SaveChanges();
return count;
}
4、删除文章
public int Remove(Article article)
{
MyDBEntities db = new MyDBEntities();
db.Article.Remove(article);
int count = db.SaveChanges();
return count;
}
5、修改文章
public int Update(Article article)
{
MyDBEntities db = new MyDBEntities();
//设置对象状态
db.Entry<Article>(article).State = System.Data.Entity.EntityState.Modified;
int count = db.SaveChanges();
return count;
}
六、编写BLL类
1、添加一个私有字段,用于调数据访问对象
public ArticleDAO aAdo = new ArticleDAO();
2、添加文章
public int AddArticle(Article article)
{
return aAdo.Add(article);
}
3、查询所有数据
public List<Article> Select()
{
return aAdo.Select();
}
4、根据ID查询单个数据
public Article Select(int id)
{
return aAdo.Select(id);
}
5、添加文章,添加数据
public int Add(Article article)
{
return aAdo.Add(article);
}
七、编写视图层 右键web项目,选择添加,选择新建窗体,转到设计视图,用工具栏拖控件到设计视图完成界面设计,
1、在Grdview控件绑定数据生成之后代码如下:
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataSourceID="ObjectDataSource1">
2、添加数据
<Columns>
<asp:BoundField DataField="Id" HeaderText="Id" SortExpression="Id" />
<asp:BoundField DataField="Title" HeaderText="Title" SortExpression="Title" />
<asp:BoundField DataField="Author" HeaderText="Author" SortExpression="Author" />
<asp:BoundField DataField="Coutent" HeaderText="Coutent" SortExpression="Coutent" />
<asp:BoundField DataField="Catelogid" HeaderText="Catelogid" SortExpression="Catelogid" />
<asp:BoundField DataField="PushDate" HeaderText="PushDate" SortExpression="PushDate" />
</Columns>
3、连接BLL类自动生成数据
<asp:ObjectDataSource ID="ObjectDataSource1" runat="server" SelectMethod="Select" TypeName="BLL.AritcleService"></asp:ObjectDataSource>
4、加入一个Button按钮
<asp:Button ID="Button1" runat="server" Text="发表文章" OnClick="Button1_Click"/>
八、添加页面代码
<div>
标题:<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<br />
作者:<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
<br />
文章内容:<asp:TextBox ID="TextBox3" runat="server"></asp:TextBox>
<br />
类别:<asp:DropDownList ID="DropDownList1" runat="server" DataTextField="name" DataValueField="id"></asp:DropDownList>
<br />
<asp:Button ID="Button1" runat="server" Text="发表文章" OnClick="Button1_Click" />
</div>
九、编写视图层后台代码
1、引用方法并添加跳转后台代码
AritcleService aritcleService = new AritcleService();
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
//定义一个msg接收添加页面传过来的msg
string msg = Request.QueryString["msg"];
if (!string.IsNullOrEmpty(msg))
{
Response.Write("<script>alert('添加成功!')</script>");
}
}
添加之后
//if (!IsPostBack)
//{
// Response.Write("<script>alert('新增成功!')</script>");
//}
}
protected void Button1_Click(object sender, EventArgs e)
{
Response.Redirect("Add.aspx");
}
十、添加后台代码
1、实例化DAL两个类,展示数据,绑定数据:
//实例化DAL两个类
private CatelogService catelogService = new CatelogService();
private AritcleService aritcleService = new AritcleService();
//绑定数据,展示数据
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
//绑定数据
this.DropDownList1.DataSource = catelogService.Select();
//展示数据
this.DropDownList1.DataBind();
}
}
2、在Button里面添加数据
protected void Button1_Click(object sender, EventArgs e)
{
Article article = new Article();
article.Title = this.TextBox1.Text;
article.Author = this.TextBox2.Text;
article.Coutent = this.TextBox3.Text;
article.Catelogid = int.Parse(this.DropDownList1.SelectedValue);
article.PushDate = DateTime.Now;
//声明一个变量来接收执行后的结果
int result= aritcleService.Add(article);
//判断是否添加成功
if (result > 0)
{
//成功了就执行这段代码
//~/zhuye.aspx这是跳转到的那个页面 ?msg=添加成功给zhuye的msg赋值
Response.Redirect("~/zhuye.aspx?msg=添加成功");
}
else
{
Response.Write("<script>alert('添加失败')</script>");
}
//if (result>0)
//{
// Response.Redirect("WebForm1.aspx");
//}
}
}