LINQ在.NET Framework 3.5中的应用

LINQ(Language Integrated Query)是微软在.NET Framework3.5中引入的一项新技术,它为C#3.0提供了一种新的查询数据库和对象的语法。LINQ可以用于映射XML、ADO.NET数据集、SQL以及.NET集合中的数据。

在设计三层或多层架构的项目时,需要创建业务类和对象。以下是一个简单的类定义,它映射到用户表:

public class UserBaseEntity { public int ID { get; set; } public string Fullname { get; set; } public string Fathername { get; set; } }

SQL中创建一个表:

CREATE TABLE Users ( ID nvarchar(50) PRIMARY KEY NOT NULL, Fathername nvarchar(50) NOT NULL )

LINQ中,需要使用映射属性来定义实体类。以下是如何在类中映射属性的示例:

using System.Data.Linq.Mapping; [Table(Name = "Users")] public class Users { [Column(DbType = "nvarchar(32) not null", IsPrimaryKey = true)] public string ID; [Column(DbType = "nvarchar(50) not null")] public string FullName; [Column(DbType = "nvarchar(50) not null")] public string FatherName; }

LINQ查询有三个部分:获取数据源、创建查询和执行查询。

在三层架构中,创建数据访问层、业务访问层和表示层。

创建项目名为Users,在Visual Studio 2008中选择3.5框架。

在业务访问层(业务层)中,创建一个名为UsersBase.cs的用户基类:

using System; using System.Collections.Generic; using System.Text; namespace AamirHasan.BLL { public class UsersBase { private Int64 _id; private string _fullName; public String FullName { get { return _fullName; } set { _fullName = value; } } public Int64 ID { get { return _id; } set { _id = value; } } } }

创建一个Users类,并创建一个名为getUsers()的函数,该函数从用户表中获取FullName并返回用户列表:

using System; using System.Collections.Generic; using System.Linq; using System.Text; using AamirHasan.DAL; namespace AamirHasan.BLL { public class Users : UsersBase { public List getUsers() { DBConnection d = new DBConnection(); using (var db = d.GetDBContext()) { List patientRecord = (from x in db.users select new Users { FullName = x.username }).ToList(); return patientRecord; } } } }

在表示层中,使用了Web表单,因此创建一个Web页面并编写一个Web方法以获取所有用户名称列表:

using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.Services; using AamirHasan.BLL; // 添加业务层引用 using System.Web.Security; public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { } [WebMethod] public static List GetUsersList() { Users a = new Users(); return a.getUsers(); } }

注意:函数应该是静态的,以便从jQuery向服务器端发送请求。

在HTML页面中,在head标签下包含jQuery引用。

添加jQuery请求函数,该函数将发送请求并获取JSON对象:

function GetData() { var request = {}; $.ajax({ type: "POST", url: "Default.aspx/GetUsersList", data: request, contentType: "application/json; charset=utf-8", dataType: "json", dataFilter: OnDataFilter, success: OnSuccess, error: OnError }); } function OnDataFilter(data) { var dataObj = eval("(" + data + ")"); if (dataObj.hasOwnProperty("d")) return dataObj.d; return dataObj; }

JSON对象将返回值到onSuccess函数,如果发生错误,则返回onError函数。

function OnSuccess(data) { alert(data); // 写逻辑如何显示数据在屏幕上。 // 这里写逻辑以显示记录,例如在div中显示数据 } function OnError(data) { var err = eval("(" + data.responseText + ")"); alert(err.Message); }

在客户端点击时,将调用GetData()函数。

结论:使用三层架构,可以制作基于Web的项目和基于Windows窗体的项目。现在代码也减少了,因为不需要使用LINQ编写数据访问层和业务层。LINQ是微软引入的新技术。它更快地从数据库中获取数据,jQuery通过JSON对象发送和获取数据,这将在网络上以减少的数据包数量传输。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485