#.NET 使用EF搭建三层完成查询,模糊查询
Posted 爱喝可乐的阿囧
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了#.NET 使用EF搭建三层完成查询,模糊查询相关的知识,希望对你有一定的参考价值。
数据库的搭建
数据表的设计
创建数据库:ForumDB
创建数据表:Articles(文章表)、Users(用户表)
Articles表
字段 | 类型 |
---|---|
FID(编号) | int |
FTitle(标题) | nvarchar(200) |
FAuthor(作者:外键用户表ID) | int |
FText(文章) | text |
FTime(发布时间) | datetime |
FHit(点击量) | int |
Users表
字段 | 类型 |
---|---|
ID(编号) | int |
ULogin(账号) | nvarchar(50) |
UPwd(密码) | nvarchar(50) |
UName(昵称) | nvarchar(50) |
设计外键关系
项目的搭建
项目、三层的搭建
数据库搭建完成就要开始创建ASP.NET项目啦
创建一个项目:WebSite
创建完项目后,开始搭建三层架构
首先来搭建Models层添加一个类库项目,取名Models:
类库是.NET Framework的奥,别建错了!
接下来就是DAL(数据访问层)层:也是一个.NET Framework的类库
还有就是BLL(逻辑层)层:同上
建完之后我们会有四个项目,如下:
到了这里,我们还只是搭了个空壳,接下来我们就要开始给这个空壳赋予灵魂。
EF的搭建
在Models层中,我们来添加一个ADO.NET实体数据模型
选择来自数据库的EF设计器
下一步我们选择新建连接,依次输入自己的服务器名称,选择SQL Server身份验证,输入用户名密码,选择我们的数据库
点击确定,我们可以看到下面有一个:
这个就是我们之后要对数据进行操作的时候要调用的一个名字。上面还有一个是或者否的选择要我们去选择,对于这个项目来说并没有什么特殊的数据,所以选择哪一个都可以,如何我们点击下一步,实体框架就选默认的就行。
在这里记得要选择我们要用到的表,其他的暂时不用管。最后点击完成即可,然后我们就可以看到下面这个表了:
还有一个重点!!!我们找到Models层里的App.config文件,在里面找到:
<connectionStrings>
<add name="ForumDBEntities" connectionString="metadata=res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl;provider=System.Data.SqlClient;provider connection string="data source=.;initial catalog=ForumDB;user id=sa;password=123456;MultipleActiveResultSets=True;App=EntityFramework"" providerName="System.Data.EntityClient" />
</connectionStrings>
将这一段复制到WebSite项目里的Web.config文件里
然后找到models层里的引用中的EntityFramework文件,右键选择在对象浏览器中查看
右下角有一行地址,将那行地址复制下来,注意别复制文件名,然后在每一个层里的引用添加上该路径的这两个文件
我们就需要在BLL层右键引用,点击添加引用
然后点击左下方的浏览,然后点击右下角的浏览,根据刚刚复制的路径去找到前面说的那两个文件,然后选择上那两个文件点击添加即可。
接下来我们还要右键项目添加互相的引用关系:DAL引用Models,BLL引用DAL和Models,WebSite引用BLL和Models
然后我们的项目搭建基本就完成了
接下来开始写实现代码
功能实现
查询
首先来实现查询功能,让数据展示出来:
在DAL层创建一个类:ArticlesService
其中首先就要把实体数据模型先实例化一个出来方便使用:
ForumDBEntities db = new ForumDBEntities();
下面是在DAL层中查询的方法:
/// <summary>
/// 查询
/// </summary>
/// <returns></returns>
public List<Articles> GetArticles()
{
return db.Articles.Select(u=>u).ToList();
}
(如果没报错,这段可忽略)db.Articles在这里如果报错的话就ALT+Enter然后安装它需要的那个框架,如果运行报框架错的话,可能就是框架没引用上,我们就需要右键引用,点击添加引用
然后点击左下方的浏览,然后点击右下角的浏览,去找到前面说的那两个文件,然后选择上那两个文件点击添加即可。
然后我们在BLL层中创建ArticlesManager类,首先还是要实例化DAL层里的ArticlesService类,方便方法的调用,代码如下:
/// <summary>
/// 查询
/// </summary>
/// <returns></returns>
public List<Articles> GetArticles()
{
return service.GetArticles();
}
因为我们在DAL层中已经进行的数据查询的操作,所以我们在这里直接返回查出来的集合即可。
接下来,我们在Website中建一个Web窗体Home.aspx
前端代码如下:
<form id="form1" runat="server">
<div>
<p>作者:<asp:DropDownList ID="DropDownList1" runat="server"></asp:DropDownList>
标题:<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox><asp:Button ID="Button1" runat="server" Text="查询" OnClick="Button1_Click" />
</p>
<table>
<tr>
<td>作者</td>
<td>标题</td>
<td>时间</td>
<td>操作</td>
</tr>
<asp:Repeater ID="Repeater1" runat="server">
<ItemTemplate>
<tr>
<td><%# Eval("Users.UName")%></td>
<td><%# Eval("FTitle")%></td>
<td><%# Eval("FTime")%></td>
<td>
<asp:LinkButton ID="LinkButton1" CommandArgument='<%# Eval("FID")%>' runat="server">删除</asp:LinkButton></td>
</tr>
</ItemTemplate>
</asp:Repeater>
</table>
</div>
</form>
相对应,在后端,我们首先还是要先把BLL层中的ArticlesManager类实例化出来
ArticlesService service = new ArticlesService();
接下来就是在加载事件中写数据绑定了:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
Repeater1.DataSource= manager.GetArticles();
Repeater1.DataBind();
}
}
最基本的数据查询就出来了,接下来讲的是模糊查询的方法
模糊查询
DAL层中代码为:
/// <summary>
/// 根据标题模糊查询
/// </summary>
/// <param name="tit">标题</param>
/// <returns></returns>
public List<Articles> GetArticlesByTitle(string tit)
{
return db.Articles.Where(u=>u.FTitle.Contains(tit)).ToList();
}
Contains(tit)方法就是判断字符串中包含该字符,这里主要就是加了个查询的条件,其他的跟普通查询都一样,接下来我们在BLL层调用这个方法即可:
/// <summary>
/// 模糊查询
/// </summary>
/// <param name="tit"></param>
/// <returns></returns>
public List<Articles> GetArticlesByTitle(string tit)
{
return service.GetArticlesByTitle(tit);
}
前端按钮的点击事件中,代码如下:
protected void Button1_Click(object sender, EventArgs e)
{
if (TextBox1.Text == string.Empty)
{
Repeater1.DataSource = manager.GetArticles();
Repeater1.DataBind();
}
else
{
Repeater1.DataSource = manager.GetArticlesByTitle(TextBox1.Text);
Repeater1.DataBind();
}
}
先判断文本框是否为空,如果是空的就查全部,否则就根据条件查询
以上就是本片文章的基本内容,希望能帮助到大家~
如果哪里有问题,可以随时私信我噢,感谢大家支持~
以上是关于#.NET 使用EF搭建三层完成查询,模糊查询的主要内容,如果未能解决你的问题,请参考以下文章