LINQ to SQL 代码例子
来源:互联网 发布:连接oracle数据库工具 编辑:程序博客网 时间:2024/05/16 09:03
使用LINQ to SQL对数据库建模:
Visual Studio Orcas版中提供了一个LINQ toSQL设计器,该设计器提供了一种简易的方式,将数据库可视化地转换为LINQ toSQL对象模型。我下一篇博客将会更深入一些来介绍怎么使用该设计器(你可以观看我一月份时录制的这个关于如何从头开始创建LINQ toSQL模型的录像)。
通过LINQ to SQL设计器,我可以方便地设计出如下所示的Northwind数据库的示例模型:
上图定义了四个实体类:Product, Category, Order 和 OrderDetail。每个类的属性都映射到数据库中相应表的字段,类实体的每个实例代表了数据表中的一行记录。
在上图中,四个实体类间的箭头代表了不同实体间的关联/关系。它们主要是根据数据库中的主键/外键关系生成的。设计器上的箭头的指向表明了该关系是一对一还是一对多的关系。基于此,强类型的属性将会被加入到实体类中。例如,上边的Category类和Product类之间有一个“一对多”的关系。这意味着Category类将有一个"Products"属性,该属性代表了在该类中所有的产品对象的集合。而Product类将会有一个"Category"属性来指向一个Category类的实例,该Category类的实例表明了了产品所属的类别。
上图中LINQ toSQL设计器的右侧列出了与我们的数据库模型交互的存储过程。在上边的例子中,我添加了一个“GetProductsByCategory”存储过程。它有一个categoryID作为输入参数,返回一个产品实体序列作为结果集。下面的代码将展示如何调用该存储过程。
理解DataContext类
当你点击LINQ to SQL设计器上的“保存"按钮时,VisualStudio将会保存我们建立的代表了实体和数据库关系的各个类。针对加入到我们的解决方案的每一个LINQ toSQL设计器文件,同时也会生成一个自定义的DataContext类。这个DataContext类是我们从数据库中查询实体或者进行更改操作的主要渠道。生成的DataContext类将含有一些属性,对应于我们在数据库中建了模的每个数据表,以及一些方法,对应于我们添加的每个存储过程。
例如,下图就是基于我们上边设计的模型而生成的的NorthwindDataContext类:
LINQ to SQL 代码例子
用LINQ to SQL 设计器对我们的数据库建模之后,我们就可以很方便地编写代码对数据库进行操作了。下边是一些展示了常见的数据库操作的代码例子:
1) 从数据库中查询Products
下面的代码用LINQ to SQL 查询语法来获取Product对象的IEnumerable序列。注意代码是如何通过Product/Category关系来仅查出那些类别是"Beverages"的产品的:
C#:
2) 更新数据库中的一条产品记录
下面的代码示范了如何从数据库中查询出单一的一条产品记录,更新它的价格,然后将改动保存至数据库:
C#:
3) 向数据库中插入一条新的Category和两条新的Products
下面的代码示范了如何生成一个新的分类,然后生成两条和该分类相关联的产品,然后将这三条记录保存到数据库中。
注意下边,我不用手工去维护主/外键关系,取而代之的是,我只向分类对象的“Products”集合中添加了两个Product记录,然后把该Category对象添加到DataContext的“Categories”集合中,LINQ toSQL将知道自动为我持久适当的PK/FK的关系。
C#
4) 从数据库中删除Products
下面的代码示范了如何从数据库中删除所有的玩具产品:
C#:
5) 调用存储过程
下面的代码示范了如何不使用LINQ查询语法,而是通过调用我们在上面向数据模型中添加的“GetProductsByCategory”存储过程来查询Product实体。注意,一旦我查询出了Product结果集,我可以更新/删除它们,然后再调用 db.SubmitChanges()来将这些更新提交到数据库。
C#:
6) 在服务器端分页查询Products
下面的代码示范了如何通过LINQ查询语法实现高效的服务器端数据库分页查询。通过使用下面的Skip()和Take()操作符,我们从数据库中只查询出从200行开始的10条记录:
C#:
总结
LINQ to SQL提供了一种很棒的、干净利索的方法来为你的应用程序来建立数据层。一旦你定义了数据模型,你就可以方便而且有效地对它进行查询,插入,更新和删除。
- LINQ to SQL 代码例子
- LINQ to SQL的快速入门例子
- c# Linq to sql 基本查询例子
- Linq to Sql lambda例子总结
- linq,linq to sql
- [代码]有链接表的LINQ查询(LINQ to SQL)
- Linq to sql(十):分层构架的例子
- Linq to sql(十):分层构架的例子
- Linq to sql(十):分层构架的例子
- 第三十八讲 LINQ to SQL-续 (手动的写Linq to Sql代码)
- Linq初探--Linq to SQL
- LINQ to SQL 学习
- 什么是Linq to sql
- 使用LINQ to SQL
- 深入LINQ to SQL
- Linq To Sql注意事项
- Linq to SQL:基础知识
- LINQ to SQL实例
- 嵌入式Linux开发 资料页面
- AE添加CAD文件
- AE添加JPG文件
- struts2+spring2.5.6+hibernate环境lib
- 教堂时钟控制器
- LINQ to SQL 代码例子
- NET安全系列之四:.NET中加密算法及证书
- 关于隐藏数据联想到的类型无关
- 泰州师范高等专科学校2010年提前批录取分数线
- spring3.0 + hibernate3.5 + struts2的整合
- 不要将希望变成奢望
- VS2008和VS2010提示假死,原来是mac TypeTray“捣鬼”
- POJ_3169_差分约束+bellman_ford
- 努力吧