LINQ to SQL 数据库与LINQ对象的关系
2009-10-08 18:15
393 查看
LINQ的优点是提供了在代码中使用强类型化对象,这些对象还映射到以后的数据库对象上
下面是数据库对象和LINQ对象的映射关系
左列是数据库,数据库是一个完整的实体--表、视图、触发器、存储过曾构成了数据库
右列是LINQ对象
DataContext对象,他绑定到数据库上,为了与数据库进行必要的交互操作,该对象包含一个连接字符串,并管理所发生的所有事物的处理,还负责记录操作,管理数据的输出。Data对象全面管理与数据库的事务处理。
数据库关系,各个对象之间映射的嵌套集合。
存储过程,会映射为DataContext实例的方法上
在调用一个Linq查询 dc.Products 的时候
查询会被LINQ to SQL 转换成为SQL查询语句,提供给数据库,LINQ to SQL 层通过这个查询从数据库中获得行数据,把返回的数据编程强力型对象集合,便于使用。
实例化DataContext对象有三个可选参数(数据名,连接串,另一个DataContext对象)
1.使用ExecuteQuery,查询所有产品集合
如果想要添加参数的查询可以使用以下占位符的形式
2.Connection 属性 返回一个 System.Data.SqlClient.SqlConnection实例
3.Transaction 属性
如果有一个可以使用的Ado.net 事物,就可以使用Transaction 属性把这个事务处理赋予DataContext对象实例。 还可以像下面是用 TransactionScope 实现事务,如果数据库操作失败,就回退所有操作,返回最初状态
4.DataContext 其他的方法和属性
方法:
![](http://images.cnblogs.com/cnblogs_com/TerryFeng/WindowsLiveWriter/LINQtoSQLLINQ_FCAA/image_thumb.png)
属性:
![](http://images.cnblogs.com/cnblogs_com/TerryFeng/WindowsLiveWriter/LINQtoSQLLINQ_FCAA/image_thumb_1.png)
![](http://images.cnblogs.com/cnblogs_com/TerryFeng/WindowsLiveWriter/LINQtoSQLLINQ_FCAA/image_thumb_2.png)
下面是数据库对象和LINQ对象的映射关系
数据库对象 | LINQ对象 |
数据库 | DataContext |
表 | 类和集合 |
视图 | 类和集合 |
列 | 属性 |
关系 | 嵌套集合 |
存储过程 | 方法 |
右列是LINQ对象
DataContext对象,他绑定到数据库上,为了与数据库进行必要的交互操作,该对象包含一个连接字符串,并管理所发生的所有事物的处理,还负责记录操作,管理数据的输出。Data对象全面管理与数据库的事务处理。
数据库关系,各个对象之间映射的嵌套集合。
存储过程,会映射为DataContext实例的方法上
在调用一个Linq查询 dc.Products 的时候
查询会被LINQ to SQL 转换成为SQL查询语句,提供给数据库,LINQ to SQL 层通过这个查询从数据库中获得行数据,把返回的数据编程强力型对象集合,便于使用。
DataContext对象
DataContext对象管理所发生的所有事物的处理,并提供操作接口实例化DataContext对象有三个可选参数(数据名,连接串,另一个DataContext对象)
1.使用ExecuteQuery,查询所有产品集合
public void UsingExecuteQuery() { // using ExecuteQuery //获得一个DataContext对象,注意他使用的是DataContext DataContext dc = new DataContext(ConfigurationManager.ConnectionStrings["NorthwindConnectionString"].ToString()); //执行一个明文查询,并返回一个集合,注意泛型的使用 IEnumerable<Products> myProducts = dc.ExecuteQuery<Products>("SELECT * FROM PRODUCTS", ""); //便利集合 foreach (Products item in myProducts) { Response.Write(item.ProductID + " | " + item.ProductName + "<br />"); } }
如果想要添加参数的查询可以使用以下占位符的形式
IEnumerable<Products> myProducts = dc.ExecuteQuery<Products>("SELECT * FROM PRODUCTS WHERE UnitsInStock > {0}", 50);
2.Connection 属性 返回一个 System.Data.SqlClient.SqlConnection实例
public void Connection() { //注意这里使用的是NorthwindDataContext对象 NorthwindDataContext dc = new NorthwindDataContext(); Response.Write(dc.Connection.ConnectionString); }
3.Transaction 属性
如果有一个可以使用的Ado.net 事物,就可以使用Transaction 属性把这个事务处理赋予DataContext对象实例。 还可以像下面是用 TransactionScope 实现事务,如果数据库操作失败,就回退所有操作,返回最初状态
public void Transaction() { NorthwindDataContext dc = new NorthwindDataContext(); using (TransactionScope myScope = new TransactionScope()) { //新建产品 Products p1 = new Products() { ProductName = "Bill's Product" }; //插入这个产品,并且获得插入后的p1信息 dc.Products.InsertOnSubmit(p1); Products p2 = new Products() { ProductName = "Another Product" }; dc.Products.InsertOnSubmit(p2); try { dc.SubmitChanges(); //返回刚刚插入数据的ID值 Response.Write(p1.ProductID + "<br />"); Response.Write(p2.ProductID + "<br />"); } catch (Exception ex) { Response.Write(ex.ToString()); } //指示操作以完成 myScope.Complete(); }
4.DataContext 其他的方法和属性
方法:
![](http://images.cnblogs.com/cnblogs_com/TerryFeng/WindowsLiveWriter/LINQtoSQLLINQ_FCAA/image_thumb.png)
属性:
![](http://images.cnblogs.com/cnblogs_com/TerryFeng/WindowsLiveWriter/LINQtoSQLLINQ_FCAA/image_thumb_1.png)
Table<TEntity> 对象
Table<TEntity>对象表示在数据库中操作的表,数据库中的表都会表示成Table<TEntity>的实例,比如之前的Product可以表示成Table<Product>,有许多方法是可以用于Table<TEntity>对象,其中一些如下:![](http://images.cnblogs.com/cnblogs_com/TerryFeng/WindowsLiveWriter/LINQtoSQLLINQ_FCAA/image_thumb_2.png)
相关文章推荐
- LINQ to SQL 数据库与LINQ对象的关系
- LINQ to SQL 数据库与LINQ对象的关系
- LINQ TO SQL (一):1. 对象关系设计器(O/R 设计器)
- LINQ TO SQL:操作有层次关系的对象
- LINQ to SQL 用于数据库连接的DataContext对象成员
- 步步学LINQ to SQL:将类映射到数据库表【转】
- 一步一步学Linq to sql(八):继承与关系
- 在VS2008中通过LINQ to SQL连接数据库的流程
- linq to sql 中从dbml文件中创建数据库
- 光脚丫学LINQ(027):如何指定数据库名称(LINQ to SQL)
- LINQ to SQL(2):生成对象模型
- .net 3.5 数据库开发 之 LINQ to SQL
- Visual C# 2008+SQL Server 2005 数据库与网络开发-- 11.3 LINQ To SQL
- Linq to sql(八):继承与关系(三)
- Linq to SQL查询数据库
- 地磅称量系统之(55) 扩展LINQ to SQL Classes将数据表映射成对象后不具有的验证规则
- Linq to SQL Profiler使用注意事项——数据库远程请求
- LINQ to SQL中数据类的包含关系
- LINQ to SQL更新数据库操作
- LINQ中实现对象Many-To-Many(多对多)的关系映射