技术开发 频道

SQL Server 2008使用LINQ进行数据访问

练习 2 – LINQ to SQL: 面向连接数据库的LINQ

本练习演示了LINQ to SQL当中更多的高级功能。

LINQ to SQL 是LINQ项目的一部分,允许您查询和处理与数据库表相关的对象。它消除了传统的数据库表与应用程序特定对象模型之间的不匹配,让您可以把数据当作对象来处理,同时框架自动的处理您的对象的获取和更新。

为了给一个特定数据库创建一个对象模型,我们必须将类映射到数据库实体当中。有三种方式可以创建对象映射:为现有的对象添加属性,使用提供的设计器来自动生成对象和映射,以及使用命令行的SQLMetal工具。本练习中将介绍前面的两种方法。
 
任务 1 – 创建对象映射– 创建一个对象并提供属性

在Solution Explorer中,右键点击References,选择“Add Reference”。
在弹出的菜单中,选择“System.Data.Linq”。
点击“OK”。
向program.cs 的顶部添加下面的using指令:

using System.Data.Linq;
using System.Data.Linq.Mapping;


为Customer添加下面的属性,以创建一个到数据库中的Customer表的映射,它包含了叫做CustomerID和City的两个列。在这里,您将只需要映射Northwind数据库中的Customer表的两个列。

[Table(Name = "Customers")]
    
public class Customer
    {
        [Column]
        
public string CustomerID { get; set; }
        [Column]
        
public string City { get; set; }

        
public override string ToString()
        {
            
return CustomerID + "\t" + City;
        }
    }

回到ObjectQuery方法。正如您在内存中的集合、XML和数据集中操作的那样,仍然是查询那些居住在伦敦的客户。注意,这里仅仅需要少量的代码变更。在创建完数据连接后,您可以获取出Customer表中的数据行,并选择那些居住在伦敦的客户所在的行,将它们作为IEnumerable<Customer>返回。

static void ObjectQuery()
{
    var db
= new DataContext
          (
@"Data Source=(local);Initial Catalog=Northwind;Integrated Security=true;");
    var results
= from c in db.GetTable<Customer>()
            
where c.City == "London"
                        select c;
          
foreach (var c in results)
        Console.WriteLine(
"{0}\t{1}", c.CustomerID, c.City);
}

ObjectQuery方法中使用的DataContext对象,正是从数据库中获取对象并提交数据更改的主要管道。

返回到Main 方法,然后对ObjectQuery做出如下更改:

static void Main(string[] args)
{
    ObjectQuery();
}

点击Ctrl+F5 来构建和运行应用程序。  查看输出的结果后,点击任意键以结束应用程序。   
现在,添加下面的代码行,用来打印自动生成的运行在数据库中的SQL查询。

static void ObjectQuery()
{
    DataContext db
= new DataContext(
        
@"Data Source=(local);Initial Catalog=Northwind;Integrated Security=true;");
    db.Log
= Console.Out;
    var results
= from c in db.GetTable<Customer>()
      
where c.City == "London"
                  select c;
    
foreach (var c in results)
        Console.WriteLine(
"{0}\t{1}", c.CustomerID, c.City);

}

点击Ctrl+F5 来构建和运行应用程序。  查看输出的结果和生成的SQL查询后,点击任意键以结束应用程序。   

任务 2 –创建对象映射– 使用设计器 – 添加设计器文件

首先需要删除原来的映射关系。删除整个Customer类。
接下来,创建对象,从而为数据表建模。右击LINQ Overview项目,并点击Add | New Item。
在Templates 中,点击LINQ To SQL Classes。
为新项提供一个名称,在Name文本框中输入“Northwind”。
点击OK。
 

0
相关文章