有了LINQ,我还需要写DAL层吗?

来源:互联网 发布:深圳云计算培训 编辑:程序博客网 时间:2024/05/05 15:34

LINQ---Language Integrated Query

 

一般的,当你听说要执行查询操作的时候,首先会想到的是T-SQL语句查询数据库,或者XPath查询XML文档。
而现在的呢?LINQ提供了一种通用的方式让你可以查询“所有”的数据信息源。
LINQ的全称是Language Integrated Query. 它作为一种数据查询语言直接集成到了主流编程语言之中
比如:C#3.0,VB9.0。对于程序员来说,在以后的查询操作中,我们不必再将T-SQL直接嵌入到程序代码之中。
LINQ可操作的查询数据源除了数据库、XML文档以外,还包括集合、数组等任何支持IEnumerable
或者IQueryable的数据源。你甚至可以查询你自己的应用程序有多次个pubic方法,或者一个namespace
有多少个类!Cool!LINQ将会作为Orcas的一部分发布。

 

用于SQLLINQ是内置于.NET FrameworkOrcas”版本中的一种O/RM(对象关系映射)实现,允许使用.NET类对一个关系型数据库进行建模。然后就可以使用LINQ对数据库进行查询了,而且还支持update/insert/delete操作!

用于SQLLINQ完全支持数据库中的事务,视图和存储过程。还提供了一种简单的方式来整合数据验证和业务逻辑规则到你的数据模型中去。

 

第一步,使用LINQ对数据库建模

Visual StudioOrcas”内置了用于SQLLINQ设计器,提供了快速建模功能和LINQ对象模型的可视化操作(作者将在下篇文章中详细讲解)。以SQL Server里著名的“北风”数据库为例:


其中定义了四个类:
ProductCategoryOrderOrderDetail。类中的每个属性映射了数据库表中的相应的字段。每个类的实例则代表了数据库表中的一条记录。箭头代表了不同实体间的关系,映射了数据库中的主键/外键。箭头方向则代表了关系是一对一还是一对多,基于这个,强类型属性就会添加到实体类中。例如,Category类与Product类就是一个一对多关系,这就意味着Product中有一个“Category”属性指向一个代表了Product所属类型的Category实例。

设计器右侧窗口中则包含了与现在的数据库模型互动的相关存储过程的列表,可以手动添加。

 

当在设计器点击“保存”时,Visual Studio会生成代表建模中的实体和关系的.NET类,自动生成文件添加到解决方案中。同时还会生成一个定制的DataContext类,主要用来数据库中查询实体以及更新数据库。DataContext类中会创建代表建模中每个表的属性,和添加的每个存储过程的相应方法。

 


第二步,
LINQ应用

1.        查询

通过Product/Category关系来查询指定CategoryProduct,var关键字表示声明的是匿名类型

 

2.        更新

先从数据库中取出单个Product,更新价格,保存变化回数据库
 

 

3.        插入

先新建一个Category,在新建两个属于该CategoryProduct,然后保存回数据库。注意,在这里不需要管手动理主键/外键关系,仅需要添加ProudctCategoryProducts集合,再把Catgory添加到DataContext中的Categories集合即可,DataContext会自动维护主键/外键关系。

 

4.        删除

从数据库中删除指定Product

 

5.        调用存储过程

注意,一旦得到Product的集合结果,同样可以执行update/delete操作,并保存回数据库。

 

6.        分页读取

使用Skip()和Take()方法,从数据库中得到指定行的开始的指定行数的Product集合。有些类似于ObjectDataSource中的分页方法(startRowIndex,maximumRows两个参数),还想到了SQL Server 2005中的ROW_Number()函数:)


 

总结:

还需要自己写数据访问层吗~~~~

原创粉丝点击