#.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的奥,别建错了
类库是.NET Framework的奥,别建错了!
接下来就是DAL(数据访问层)层:也是一个.NET Framework的类库
还有就是BLL(逻辑层)层:同上
建完之后我们会有四个项目,如下:
四个项目
到了这里,我们还只是搭了个空壳,接下来我们就要开始给这个空壳赋予灵魂。

EF的搭建

在Models层中,我们来添加一个ADO.NET实体数据模型
添加实体数据模型
选择来自数据库的EF设计器
在这里插入图片描述
下一步我们选择新建连接,依次输入自己的服务器名称,选择SQL Server身份验证,输入用户名密码,选择我们的数据库
建立连接
点击确定,我们可以看到下面有一个:
在这里插入图片描述
这个就是我们之后要对数据进行操作的时候要调用的一个名字。上面还有一个是或者否的选择要我们去选择,对于这个项目来说并没有什么特殊的数据,所以选择哪一个都可以,如何我们点击下一步,实体框架就选默认的就行。
在这里插入图片描述
在这里记得要选择我们要用到的表,其他的暂时不用管。最后点击完成即可,然后我们就可以看到下面这个表了:
EF数据模型
还有一个重点!!!我们找到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=&quot;data source=.;initial catalog=ForumDB;user id=sa;password=123456;MultipleActiveResultSets=True;App=EntityFramework&quot;" 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搭建三层完成查询,模糊查询的主要内容,如果未能解决你的问题,请参考以下文章

#.NET 使用EF搭建三层完成查询,模糊查询

#.NET 使用EF搭建三层完成查询,模糊查询

ASP.NET MVC5+EF6搭建三层实例

#.NET 简单博文案例练习EF,熟练查询

#.NET 简单博文案例练习EF,熟练查询

#.NET 简单博文案例练习EF,熟练查询