如何在网站开发中使用LINQ操作数据库

news/2024/5/9 4:03:44/文章来源:https://blog.csdn.net/xue251248603/article/details/39928525

开始之前先简单的介绍一下LINQ

    LINQ作为一种数据查询编码方式,本身并不是独立的开发语言,也不能进行应用程序的开发。但是在ASP.NET 4.0中,通过C#语言继承LINQ查询的代码,可以在任何源代码文件中使用。

    查询是一种从数据源检索数据的表达式,通常使用专门的查询语言来表示。随着变成技术的不断发展,人们已经为各种数据源开发了不同的语言,编程人员不得不对每种数据源或数据格式进行有针对性的学习。而LINQ的出现则改变了这种情况,它可以使用通用的基本编码模式来查询和转换不同的数据源,如XML文档、SQL数据库、ADO.NET数据集和.NET集合中的数据等。

     

下面先看一个简单的LINQ查询的例子:

创建一个ASP.NET Web应用程序,在“Default.aspx.cs”文件中编写如下代码:

    protected void Page_Load(object sender, EventArgs e){string[] wordArry = { "Lilei", "hANmeiMei", "zhAngSan", "LISi", "WangwU"};int i = 0;var upperLowerWords =from w in wordArryselect new { Upper = w.ToUpper(), Lower = w.ToLower() };foreach (var word in upperLowerWords){Response.Write(wordArry[i] + "单词的大写为:" + word.Upper + "<BR>");Response.Write(wordArry[i] + "单词的小写为:" + word.Lower + "<BR>");i++;}
}

运行结果如下:



查询表达式必须以from 为关键字的子句开头,并且必须以select或者group关键字的子句结尾。在第一个from子句和最后一个select 或者group子句之间,查询表达式可以包含一个或多个由下列关键字组成的可选子句:where、orderby、join、select等关键字。同时还可以使用Into关键字让join或group子句的结果能够作为同一查询表达式中附加查询子句的数据源。

(orderby关键字:Ascending关键字表示默认方式按照递增顺序排列。Descending表示关键字逆序排列。)

看几个例子了解一下:

        IEnumberable<User> userQuery =from age in Userorderby user.ageselect age;

        var userQueryByName =from u in Usergroup u by u.age;foreach (var userGroup in userQuery){Console.WriteLine(userQuery.name);foreach (User user in userGroup){Console.WriteLine("{0}", user.age);}}


        int[] arry1 = {1, 3, 5, 7, 9 };int[] arry2 = {2, 4, 6, 8, 10, 11 };var query = from val1 in arry1join var2 in arry2 on val1 + 1 equals var2select new { VAL1 = val1, VAL2 = var2 };


        int[] arry = { 0, 1, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 };var lint = arry.Select(iNum => iNum < 10 ? iNum : 0);foreach (var temp1 in lint){Response.Write(temp1.ToString());}



下面来看一下如何在网站开发中使用LINQ操作数据库

    首先,在数据库中建立数据库 test(本人使用sqlserver2008),在其中建立表userinfo,如下:



    然后开始操作vs2010

1、创建ASP.NET Web应用程序。命名“LinqTest”

2、点击 “视图” --> “服务器资源管理器”。右键单击“数据连接”,选择“添加连接”


3、在“添加连接”对话框中按照提示信息填写,并测试连接,使配置成功。


4、在“服务器资源管理器”窗口中的数据连接节点下就可以看到刚才添加好的数据库了。


5、右键项网站名称,选择“添加新项”菜单。弹出框中选择“已安装模板”,列表中选择“LINQ to SQL类”,输入需要的名称,单机添加。


6、此时在网站根目录下就会看到相应的文件


7、双击 “TestLinqDataClasses.dbml”,然后从“服务器资源管理器”中将表拖进主窗口(”对象关系设计器“界面)。


9、打开文件“TestLinqDataClasses.designer.cs”,就可以看到已经自动生成了SQL实体类以及强类型 TestLinqDataClassesDataContext的定义

[global::System.Data.Linq.Mapping.DatabaseAttribute(Name="test")]
public partial class TestLinqDataClassesDataContext : System.Data.Linq.DataContext
{private static System.Data.Linq.Mapping.MappingSource mappingSource = new AttributeMappingSource();#region 可扩展性方法定义partial void OnCreated();#endregionpublic TestLinqDataClassesDataContext() : base(global::System.Configuration.ConfigurationManager.ConnectionStrings["testConnectionString"].ConnectionString, mappingSource){OnCreated();}public TestLinqDataClassesDataContext(string connection) : base(connection, mappingSource){OnCreated();}public TestLinqDataClassesDataContext(System.Data.IDbConnection connection) : base(connection, mappingSource){OnCreated();}public TestLinqDataClassesDataContext(string connection, System.Data.Linq.Mapping.MappingSource mappingSource) : base(connection, mappingSource){OnCreated();}public TestLinqDataClassesDataContext(System.Data.IDbConnection connection, System.Data.Linq.Mapping.MappingSource mappingSource) : base(connection, mappingSource){OnCreated();}public System.Data.Linq.Table<userinfo> userinfo{get{return this.GetTable<userinfo>();}}
}[global::System.Data.Linq.Mapping.TableAttribute(Name="dbo.userinfo")]
public partial class userinfo
{private string _id;private string _name;private string _age;private string _sex;private string _job;public userinfo(){}[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_id", DbType="NChar(10)")]public string id{get{return this._id;}set{if ((this._id != value)){this._id = value;}}}[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_name", DbType="NChar(10)")]public string name{get{return this._name;}set{if ((this._name != value)){this._name = value;}}}[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_age", DbType="NChar(10)")]public string age{get{return this._age;}set{if ((this._age != value)){this._age = value;}}}[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_sex", DbType="NChar(10)")]public string sex{get{return this._sex;}set{if ((this._sex != value)){this._sex = value;}}}[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_job", DbType="NVarChar(50)")]public string job{get{return this._job;}set{if ((this._job != value)){this._job = value;}}}
}

10、现在就可以在网站中使用LINQ查询数据库了。

在“Default.aspx.cs”文件的“Page_Load”事件中添加查询代码,就可以了。如下:

    protected void Page_Load(object sender, EventArgs e){TestLinqDataClassesDataContext testUser = new TestLinqDataClassesDataContext();var userQuery = from u in testUser.userinfoselect u;foreach (var value in userQuery){Response.Write("姓名:" + value.name + " 性别:" + value.sex +  " 年龄" + value.age + "<BR>");}}

运行结果如下:


和我们数据库中的结果一致。


至此,我们以及完成了LINQ在项目中的使用。


参考文章:

《ASP.NET4.0从入门到精通》 张正礼 王坚宁编著 清华大学出版社2011年7月第1版


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_876416.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

通过微信扫描获取用户信息登陆网站

如何通过网页授权获取微信用户基本信息&#xff1f; 微信官方文档在这里&#xff1a;http://mp.weixin.qq.com/wiki/17/c0f37d5704f0b64713d5d2c37b468d75.html 还有一些可参考的文章也记录在这里&#xff1a; http://www.cnblogs.com/txw1958/p/scan-qrcode-login.html ht…

大型网站系统架构演化之路

Posted by yeho 前言 一个成熟的大型网站&#xff08;如淘宝、天猫、腾讯等&#xff09;的系统架构并不是一开始设计时就具备完整的高性能、高可用、高伸缩等特性的&#xff0c;它是随着用户量的增加&#xff0c;业务功能 的扩展逐渐演变完善的&#xff0c;在这个过程中&#…

大型网站应用之海量数据和高并发解决方案总结一二

一、网站应用背景 开发一个网站的应用程序&#xff0c;当用户规模比较小的时候&#xff0c;使用简单的&#xff1a;一台应用服务器一台数据库服务器一台文件服务器&#xff0c;这样的话完全可以解决一部分问题&#xff0c;也可以通过堆硬件的方式来提高网站应用的访问性能&…

IIS网站访问需要输入用户名和密码

IIS网站访问需要输入用户名和密码 xp系统下安装IIS5&#xff0c;并设置好网站路径&#xff0c;但是访问网站时需要输入用户名和密码&#xff0c;这个问题极大可能是因为你网站放置在一个文件系统为NTFS的盘符上&#xff0c;而IIS默认的访问用户时IUSR开头的来宾账户&#xff0c…

网站如何实现QQ登录功能

2013-12-05 10:09 1 2 3 4 5 6 7 分步阅读 如果想让网站实现QQ登录功能&#xff0c;前提是网站要具备api的接口&#xff0c;如果没有这个接口&#xff0c;那就很难实现这个功能了。 网站QQ登录功能&#xff0c;是通过接入QQ登录,用户可以使用QQ账号直接登录接入的站点&#xff…

通过Netlify制作个人网站

个人主页的创建 本文主要介绍个人主页的创建过程&#xff0c;主要通过知乎回答的指导&#xff0c;参考本人制作的个人主页。 本人个人主页制作主要使用Netlify&#xff0c;参考该网站安装教程进行安装&#xff0c;直接在自己的github中创建一个仓库作为网站节点。在安装过程中…

遇到瓶颈了?这19个网站或许可以帮到你

当我们更换工作或者想要升职的时候&#xff0c;我们总想着&#xff1a;要是能多掌握一门技能或者回到学校再学习一阵子该多好啊。当你产生类似想法的时候&#xff0c;恭喜你&#xff0c;你意识到了“终身学习”的重要性。 研究者表明&#xff0c;终身学习可以提升我们的个人修…

Java程序员进阶笔记实操—大型网站架构技术之负载均衡详解

面对大量用户访问、高并发请求&#xff0c;海量数据&#xff0c;可以使用高性能的服务器、大型数据库&#xff0c;存储设备&#xff0c;高性能Web服务器&#xff0c;采用高效率的编程语言比如(Go,Scala)等&#xff0c;当单机容量达到极限时&#xff0c;我们需要考虑业务拆分和分…

Java程序员进阶笔记实操—大型网站架构技术之负载均衡详解(二)

本次分享大纲 软件负载均衡概述Ngnix负载均衡Lvs负载均衡Haproxy负载均衡本次分享总结 一、软件负载均衡概述 硬件负载均衡性能优越&#xff0c;功能全面&#xff0c;但是价格昂贵&#xff0c;一般适合初期或者土豪级公司长期使用。因此软件负载均衡在互联网领域大量使用。常…

在Linux下配置.net网站

本文来自一位转载者&#xff0c;不知原文博主&#xff0c;故未注明地址 一、Linux安装 1.1 Linux环境 本篇文章选择VMWare虚拟机安装Linux&#xff0c;使用的Linux是CentOS-7。可以在百度上自行下载一个VMWare和CentOS-7镜像&#xff0c;建议使用最新版。 CentOS-7下载 https:/…

过滤器实现网站访问计数

创建一个过滤器&#xff0c;实现网站访问计数器的功能&#xff0c;并在web.xml文件的配置中将网站访问量的初始值设置为5000。 创建名称为CountFilter的类 创建名称为CountFilter的类&#xff0c;该类实现javax.servlet.Filter接口&#xff0c;是一个过滤器对象&#xff0c;通…

2018-2019 ACM-ICPC, Asia Seoul Regional Contest E题(分段函数二分)

首先放上队友的博客 看到最小最大值第一反应是二分&#xff0c;但是不明白怎么二分&#xff0c;看了队友的博客&#xff0c;以下胡言乱语全是根据队友博客的自己理解 首先我们的目标是errorF最小&#xff0c;设该最大误差是x,那么对于每个点,其误差都要小于x 现在我们考虑两个…

php实战之使用curl抓取网站数据

之前做过一个网站数据抓取的工作&#xff0c;让我充分感受到了计算机科学的生产力。之前为了抓取网站源数据的数据&#xff0c;我们公司只能依靠人多力量大的方式&#xff0c;一点一点从源网站抠&#xff0c;整整干了三天&#xff0c;干得头昏脑涨&#xff0c;听老板说以前有ph…

第一次构建个人网站的记录

很早之前就想构建一个属于自己的个人网站&#xff0c;自己设计样式&#xff0c;管理维护。但是一直没有进行相关的实践。 今天总算是成功了&#xff0c;也算是拥有了一个属于自己的“后花园了”。 点击进入我的“后花园” 下面我就来讲讲如何搭建一个属于自己的个人网站。 搭…

CSS+DIV练手——旅游网站

BS要结了&#xff0c;抽出空来拿CSSDIV练练手&#xff0c;用了理解的会更深刻&#xff0c;这次做的是个旅游网站的界面&#xff08;例子源于《精通CSS.DIV网页设计与布局》&#xff09;。 html代码&#xff1a; <!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitiona…

从网站细节入手提高易用性

信息系统 存储了大量信息&#xff0c;提高对信息查找的效率&#xff0c;其系统的可用性会大大的提高。那如何提高效率呢&#xff1f;哪哪些方面入手呢&#xff1f; 想要提高效率&#xff0c;首先简化操作必不可少&#xff0c;拿jc系统来说&#xff0c;基础系统在检索特定类型的…

交互设计[小插曲]--网站UI配色

作为一个前端工程师&#xff0c;我想懂一些基本的网站配色技巧还是必须的&#xff0c;现在将我在BootStrap中看到一个非常不错的配色技巧跟大家分享下&#xff0c;相信大家一看就明白&#xff1a; 同时&#xff0c;我想在这里分享自己对工程师工作态度的一些看法&#xff1a; …

浅谈SEO优化

前段时间帮朋友搬家&#xff0c;被问到会不会写python爬虫&#xff0c;我说不会&#xff08;真的不会&#xff09;。但是去图书城充数的时候还是大概瞄了一下有关python爬虫的书籍的&#xff0c;有各种各样的python爬虫框架&#xff0c;Scrapy、PySpider、Crawley、Grab等等各种…

2021新手建站-宝塔一键部署WordPress(上)

2021新手建站-宝塔一键部署WordPress&#xff08;上&#xff09; 1.前期准备 服务器域名 2.部署宝塔 演示Centos系统下的宝塔部署过程&#xff0c;如果你是其他系统&#xff0c;可以去宝塔官网查看对应的系统如何部署安装&#xff01; 远程登录到你的服务器&#xff08;需要…