APP下载

NET平台下LINQ TO SQL关键技术的实践研究

2015-03-17徐照兴

湖北科技学院学报 2015年3期
关键词:编程语言数据模型视图

徐照兴

(江西服装学院 服装商贸分院, 江西 南昌 330201)

NET平台下LINQ TO SQL关键技术的实践研究

徐照兴

(江西服装学院 服装商贸分院, 江西 南昌 330201)

LINQ to SQL在对象领域和数据领域之间架起了一座桥梁,利用LINQ to SQL可以简化对SQL Server数据库的操作。本文介绍了LINQ to SQL技术要点,阐述了创建LINQ to SQL实体类的映射的步骤方法及注意事项,给出了LINQ to SQL访问SQL Server数据库的查询、删除、修改、更新操作要点及实现的核心代码。

LINQ to SQL;.NET;SQL Server;数据访问

LINQ(Language Integrated Query——语言集成查询)是.NET Framework3.5中的创新性数据访问技术,使程序员不必精通数据库就能快速开发数据库应用程序。传统的ADO.NET数据库访问技术,需要针对不同的数据库编写不同的SQL语句,要求程序员要熟练各种数据库及SQL语法等,如果SQL语句写错了,只有到运行时才能发现。LINQ是建立在ADO.NET技术基础上的,它能够把LINQ查询自动转换成SQL语句。

一、 LINQ to SQL技术概述

LINQ是革命性的编程技术,它改变了程序和数据之间的关系。LINQ to SQL是针对访问Microsoft SQL Server和Oracle数据库的LINQ版本,它通过以对象形式来管理关系数据库。传统方法使用SQL数据库需要掌握必要的SQL知识,在编程语言中嵌套SQL语句,或者把包含SQL语句的字符串传送给面向SQL的数据库类库中的API调用或方法。LINO to SOL可以处理与SOL数据库通信的所有细节。当应用程序运行时,LINQ to SQL会将对象模型中的语言集成查询转换为SQL,然后将它们发送到数据库进行执行。当数据库返回结果时,LINQ to SQL会将它们转换回编程语言处理的对象。

使用LINQ to SQL时,需要通过LINQ to SQL在关系数据库和编程语言(可以使C#、VB.NET等,本文实例选用C#)之间创建对象相关映射(Object-Relational Mapping,ORM)。主要的对应关系有:关系数据模型中的表对应LINQ to SQL对象模型中的实体类,关系数据模型中的表的字段对应LINQ to SQL对象模型中的类成员,关系数据模型中的外键关系对应LINQ to SQL对象模型中的关联,关系数据模型中的存储过程或函数对应LINQ to SQL对象模型中的方法。

二、创建LINQ to SQL实体类的映射

使用LINQ to SQL访问数据库的第一步是要创建映射到数据库表和视图的 LINQ to SQL实体类,该实体类的属性映射到所选表或视图中的列(字段)。创建的方法有多种,比如手动编码、用XML文件映射等,但是使用Visual Studio平台提供的O/R对象关系设计器最为方便,步骤如下(在此以Visual Studio2012平台、SQL Server2008创建DBTeacher数据库为例):

1.建立一个web网站,点击“工具”菜单下的“选项”命令,弹出选项对话框,在该对话框左侧点开“数据库工具”,选择下面的“O/R Designer”,在右侧把“名称的复数形式”启用设置为“True”。

2.创建数据库(DBTeacher)并建立表(tbTeacherInfo)在Visual Studio2012平台右侧的解决方案。资源管理器的解决方案中添加App_Data文件夹,然后在该文件夹下添加SQL Serve数据库文件DBTeacher。然后通过左侧的服务器资源管理器为数据库DBTeacher建立表tbTeacherInfo,在此只是为了说明问题,只创建三个字段,分别是TeacherID(主键)、TeacherName及Title,并向该表任意添加几条记录(作为测试用)。

3.右击站点根目录,选择“添加”/“添加新项”,在已安装模板中再选择“LINQ to SQL类”,并设置名称为DBTeacher.dbml(注意,此处LINQ to SQL类名称的主文件名最好与数据库主文件名一致),单击“确定”之后,提示把DBTeacher.dbml文件放在App_Code文件夹下,单击“是”即可。

4.在服务器资源管理器中,将tbTeacherInfo表拖动到“对象关系设计器” DBTeacher.dbml的窗口中,tbTeacherInfo表及其列在设计器窗口中由名为tbTeacherInfo的实体表示。此过程在web.config文件中会自动生成链接数据库的字符串,名称为“数据库主文件名”+“ConnectionString”。更主要是在DBTeacher.designer.cs中会自动生成必要的代码。

三、 LINQ to SQL访问数据库的主要操作技术

创建映射到数据库表和视图的 LINQ to SQL实体类之后,就可以直接通过LINQ to SQL技术访问数据库了,访问数据库主要包括查询、添加、删除、修改等操作。它们实现的一般步骤如下:

首先,根据LINQ to SQL实体类,创建一个数据上下文对象(如,TeacherDataContent)。

其次,采用查询语法,根据实际操作执行相应的LINQ查询,并将结果赋予一个变量(如,Results)。如果知道了操作结果最多只有一条记录,采用方法语法时使用SingleOrDefault ()方法实现往往更方便快捷。

最后,根据查询的结果,进行相应的数据绑定或给出相应的提示。

下面给出查询、添加、删除、修改四种操作的核心代码。

1.查询操作(以按教师编号查询为例)

DBTeacherDataContext teacherDC = new DBTeacherDataContext();

String SelectID = TextBoxID.Text;

var Results=from tbTecaherInfo in teacherDC. tbTecaherInfos where tbTecaherInfo.TeacherID==SelectID select tbTecaherInfo ;

if (Results.Count() == 1)

{ GVshow.DataSource = Results;

GVshow.DataBind();}

2.删除操作(以按姓名删除为例)

DBTeacherDataContext tdc = new DBTeacherDataContext();

string delname = TextBoxName.Text;

var Results = from tbTecaherInfo in tdc. tbTecaherInfos where tbTecaherInfo.TeacherName == delname select tbTecaherInfo;

if (Results.Count() > 0)

{ int delNumers = Results.Count();

foreach (var del in Results)

{ tdc.tbTecaherInfos.DeleteOnSubmit(del);

tdc.SubmitChanges();}}

3.添加操作

DBTeacherDataContext tdc = new DBTeacherDataContext();

string Stitle;

tbTecaherInfo teacherinfo =tdc. tbTecaherInfos.SingleOrDefault(t=>t.TeacherID ==TextBoxID.Text);

if (teacherinfo == null)

{ tbTecaherInfo s1 = new tbTecaherInfo { TeacherID = TextBoxID.Text , TeacherName = TextBoxName.Text , Title = Stitle };

tdc. tbTecaherInfos.InsertOnSubmit(s1);

tdc.SubmitChanges(); }

4.修改操作(以根据教师编号进行修改为例)

string UpdateID = TextBoxID.Text;

DBTeacherDataContext tdc = new DBTeacherDataContext();

tbTecaherInfo teacherinfo =tdc. tbTecaherInfos.SingleOrDefault(t=>t.TeacherID ==TextBoxID.Text);

tbTecaherInfo.TeacherName = TextBoxName.Text;

tbTecaherInfo.Title = TextBoxTitle.Text;

studentDC.SubmitChanges();

四、结束语

LINQ to SQL在对象领域和数据领域之间架起了一座桥梁,使程序员可以不必过多的关注SQL语句的编写,而是把精力集中在业务逻辑的实现上。文章分析了LINQ to SQL的关键技术,给出了访问SQL Server数据库的查询、添加、删除、修改操作的实现核心代码,并进行了详尽的解释,读者可以从中快速掌握LINQ to SQL技术。

2095-4654(2015)03-0006-02

2014-11-12

TP393 ;TP311

A

猜你喜欢

编程语言数据模型视图
基于JavaScript编程语言之 闭包技术在焦点轮播上的应用
Java编程语言的特点与应用
面板数据模型截面相关检验方法综述
浅谈不同编程语言对计算机软件开发的影响
5.3 视图与投影
视图
Y—20重型运输机多视图
SA2型76毫米车载高炮多视图
面向对象Web开发编程语言的的评估方法
财政支出效率与产业结构:要素积累与流动——基于DEA 和省级面板数据模型的实证研究