首先需要讲一下 DataContext 类 。
这个类是 LINQ to SQL 框架的主入口点。DataContext 是通过数据库连接映射的所有实体的源。

要在数据库操作上玩 SQL 除了 DataContext 还需要一个数据表的实体类。

在VS 2008 里面,可以直接使用生成 "LINQ to SQL 类" 来解决懒人的动手问题。

添加 "LINQ to SQL 类" 后,可以直接使用 "服务资源管理器" 添加所需要的数据表到 "LINQ to SQL 类",
这样就能直接生成 DataContext 的派生类和表的实体类。


下面这个例子,使用 Northwind 数据库。
    
LINQ 笔记 - LINQ to SQL 基本数据操作    // NorthwindDataContext 是 DataContext 派生类, 用于连接数据库与实体
LINQ 笔记 - LINQ to SQL 基本数据操作
    NorthwindDataContext n = new NorthwindDataContext(
LINQ 笔记 - LINQ to SQL 基本数据操作
@"Data Source=.;Initial Catalog=Northwind;Integrated Security=True");
LINQ 笔记 - LINQ to SQL 基本数据操作    
LINQ 笔记 - LINQ to SQL 基本数据操作    
// 操作 Orders 数据表
LINQ 笔记 - LINQ to SQL 基本数据操作
    var s = from n1 in n.Orders
LINQ 笔记 - LINQ to SQL 基本数据操作            
where n1.OrderID % 10 == 0
LINQ 笔记 - LINQ to SQL 基本数据操作            select 
new
*/



插入数据:

若要执行 SQL Insert,只需向您已创建的对象模型添加对象,然后对 DataContext 调用 SubmitChanges 即可。

LINQ 笔记 - LINQ to SQL 基本数据操作    NorthwindDataContext n = new NorthwindDataContext(
LINQ 笔记 - LINQ to SQL 基本数据操作
@"Data Source=.;Initial Catalog=Northwind;Integrated Security=True");
LINQ 笔记 - LINQ to SQL 基本数据操作
LINQ 笔记 - LINQ to SQL 基本数据操作    
// 建立对Region表的LINQ查询
LINQ 笔记 - LINQ to SQL 基本数据操作
    var Regions = from n1 in n.Region
LINQ 笔记 - LINQ to SQL 基本数据操作                  select n1;
LINQ 笔记 - LINQ to SQL 基本数据操作
LINQ 笔记 - LINQ to SQL 基本数据操作    
// 向Region插入数据
LINQ 笔记 - LINQ to SQL 基本数据操作
    Region r = new Region();
LINQ 笔记 - LINQ to SQL 基本数据操作    r.RegionID 
= 999;
LINQ 笔记 - LINQ to SQL 基本数据操作    r.RegionDescription 
= "test";
LINQ 笔记 - LINQ to SQL 基本数据操作    n.Region.InsertOnSubmit(r); 
// 添加记录到
LINQ 笔记 - LINQ to SQL 基本数据操作
    n.SubmitChanges();  // 通知数据库更改记录
LINQ 笔记 - LINQ to SQL 基本数据操作
LINQ 笔记 - LINQ to SQL 基本数据操作    
// 开始查询,延迟执行
LINQ 笔记 - LINQ to SQL 基本数据操作
    foreach (var Region in Regions)
*/



  这里创建一个新示例数据库 DBTest.mdf
  数据库只有一个 Table 表
LINQ 笔记 - LINQ to SQL 基本数据操作  CREATE TABLE [Table]
LINQ 笔记 - LINQ to SQL 基本数据操作    (
LINQ 笔记 - LINQ to SQL 基本数据操作    ID 
int NOT NULL IDENTITY (11PRIMARY KEY,
LINQ 笔记 - LINQ to SQL 基本数据操作    Value 
varchar(50NULL
LINQ 笔记 - LINQ to SQL 基本数据操作    )

    
    并为这个数据表添加一个"LINQ to SQL 类",该文件命名为:TestDB.dbml
    

更新数据:


LINQ 笔记 - LINQ to SQL 基本数据操作  // 把数据库中ID等于10记录的值修改为"null"
LINQ 笔记 - LINQ to SQL 基本数据操作
  static void Main()
  }


删除记录:


LINQ 笔记 - LINQ to SQL 基本数据操作
LINQ 笔记 - LINQ to SQL 基本数据操作  
// 把数据库中value为"null"的记录删除
LINQ 笔记 - LINQ to SQL 基本数据操作
  static void Main()
  }


存储过程:

  存储过程:
LINQ 笔记 - LINQ to SQL 基本数据操作    ALTER PROCEDURE insertToTable
LINQ 笔记 - LINQ to SQL 基本数据操作      
@value varchar(50)
LINQ 笔记 - LINQ to SQL 基本数据操作    
AS
LINQ 笔记 - LINQ to SQL 基本数据操作      
insert into [Table] (value) values (@value)
LINQ 笔记 - LINQ to SQL 基本数据操作      
RETURN

 
  在"服务器资源管理器"中打开这个存储过程,然后拖到刚才的"LINQ to SQL 类" -- TestDB.dbml 中,
在TestDB.designer.cs文件里面,IDE自动在 class TestDBDataContext(DataContext的派生类)
里面为这个insertToTable存储过程添加了如下方法代码:
 
LINQ 笔记 - LINQ to SQL 基本数据操作        [Function(Name="dbo.insertToTable")]
LINQ 笔记 - LINQ to SQL 基本数据操作        
public int insertToTable([Parameter(DbType="VarChar(50)")] string value)
        }

        
然后只需要在客户端使用一下这个方法,就完成了存储过程的调用:
LINQ 笔记 - LINQ to SQL 基本数据操作    static void Main()
    }

 

相关文章: