您的位置:知识库 »

LINQ to SQL语句(22)之DataContext

作者: 李永京  来源: 博客园  发布时间: 2008-09-18 18:28  阅读: 10686 次  推荐: 0   原文链接   [收藏]  
摘要:这个系列的第二十二篇,讲解DataContext用法。
[1] 创建和删除和验证数据库
[2] 数据库更改、动态查询及日志

系列文章导航:

LINQ to SQL语句(1)之Where

LINQ to SQL语句(2)之Select/Distinct

LINQ to SQL语句(3)之Count/Sum/Min/Max/Avg

LINQ to SQL语句(4)之Join

LINQ to SQL语句(5)之Order By

LINQ to SQL语句(6)之Group By/Having

LINQ to SQL语句(7)之Exists/In/Any/All/Contains

LINQ to SQL语句(8)之Concat/Union/Intersect/Except

LINQ to SQL语句(9)之Top/Bottom和Paging和SqlMethods

LINQ to SQL语句(10)之Insert

LINQ to SQL语句(11)之Update

LINQ to SQL语句(12)之Delete和使用Attach

LINQ to SQL语句(13)之开放式并发控制和事务

LINQ to SQL语句(14)之Null语义和DateTime

LINQ to SQL语句(15)之String

LINQ to SQL语句(16)之对象标识

LINQ to SQL语句(17)之对象加载

LINQ to SQL语句(18)之运算符转换

LINQ to SQL语句(19)之ADO.NET与LINQ to SQL

LINQ to SQL语句(20)之存储过程

LINQ to SQL语句(21)之用户定义函数

LINQ to SQL语句(22)之DataContext

LINQ to SQL语句(23)之动态查询

LINQ to SQL语句(24)之视图

LINQ to SQL语句(25)之继承

LINQ简介

adsfsaf


DataContext

DataContext作为LINQ to SQL框架的主入口点,为我们提供了一些方法和属性,本文用几个例子说明DataContext几个典型的应用。

创建和删除数据库

CreateDatabase方法用于在服务器上创建数据库。
DeleteDatabase方法用于删除由DataContext连接字符串标识的数据库。

数据库的名称有以下方法来定义:
如果数据库在连接字符串中标识,则使用该连接字符串的名称。
如果存在DatabaseAttribute属性(Attribute),则将其Name属性(Property)用作数据库的名称。
如果连接字符串中没有数据库标记,并且使用强类型的DataContext,则会检查与DataContext继承类名称相同的数据库。如果使用弱类型的DataContext,则会引发异常。
如果已通过使用文件名创建了DataContext,则会创建与该文件名相对应的数据库。

我们首先用实体类描述关系数据库表和列的结构的属性。再调用DataContext的CreateDatabase方法,LINQ to SQL会用我们的定义的实体类结构来构造一个新的数据库实例。还可以通过使用 .mdf 文件或只使用目录名(取决于连接字符串),将 CreateDatabase与SQL Server一起使用。LINQ to SQL使用连接字符串来定义要创建的数据库和作为数据库创建位置的服务器。

说了这么多,用一段实例说明一下吧!

首先,我们新建一个NewCreateDB类用于创建一个名为NewCreateDB.mdf的新数据库,该数据库有一个Person表,有三个字段,分别为PersonID、PersonName、Age。(点击展开代码)

代码在这里展开

接下来的一段代码先创建一个数据库,在调用CreateDatabase后,新的数据库就会存在并且会接受一般的查询和命令。接着插入一条记录并且查询。最后删除这个数据库。

 //1.新建一个临时文件夹来存放新建的数据库
 string userTempFolder = Environment.GetEnvironmentVariable
 ("SystemDrive") + @"\YJingLee";
 Directory.CreateDirectory(userTempFolder);
 //2.新建数据库NewCreateDB
 string userMDF = System.IO.Path.Combine(userTempFolder,
  @"NewCreateDB.mdf");
 string connStr = String.Format(@"Data Source=.\SQLEXPRESS;
AttachDbFilename={0};Integrated Security=True;
Connect Timeout=30;User Instance=True; 
Integrated Security = SSPI;", userMDF);
 NewCreateDB newDB = new NewCreateDB(connStr);
 newDB.CreateDatabase();
 //3.插入数据并查询
 var newRow = new Person
 {
     PersonID = 1,
     PersonName = "YJingLee",
     Age = 22
 };

 newDB.Persons.InsertOnSubmit(newRow);
 newDB.SubmitChanges();
 var q = from x in newDB.Persons
         select x;
 //4.删除数据库
 newDB.DeleteDatabase();
 //5.删除临时目录
 Directory.Delete(userTempFolder);

数据库验证

DatabaseExists方法用于尝试通过使用DataContext中的连接打开数据库,如果成功返回true。

下面代码说明是否存在Northwind数据库和NewCreateDB数据库 。

//检测Northwind数据库是否存在
if (db.DatabaseExists())
    Console.WriteLine("Northwind数据库存在");
else
    Console.WriteLine("Northwind数据库不存在");
//检测NewCreateDB数据库是否存在
string userTempFolder = Environment.GetEnvironmentVariable("Temp");
string userMDF = System.IO.Path.Combine(userTempFolder,
@"NewCreateDB.mdf");
NewCreateDB newDB = new NewCreateDB(userMDF);

if (newDB.DatabaseExists())
    Console.WriteLine("NewCreateDB数据库存在");
else
    Console.WriteLine("NewCreateDB数据库不存在");
[第1页][第2页]
0
0
标签:LINQ LINQ to SQL

热门文章

    最新文章

      最新新闻

        热门新闻