LINQ to SQL使用DataContext连接字符串

开发 后端
这里介绍LINQ to SQL使用DataContext连接字符串,我们首先用实体类描述关系数据库表和列的结构的属性。再调用DataContext的CreateDatabase方法,LINQ to SQL会用我们的定义的实体类结构来构造一个新的数据库实例。

LINQ to SQL有很多值得学习的地方,这里我们主要介绍LINQ to SQL使用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使用DataContext连接字符串来定义要创建的数据库和作为数据库创建位置的服务器。

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

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

  1. public class NewCreateDB : DataContext  
  2. {  
  3.  
  4. public Table<Person> Persons;  
  5. public NewCreateDB(string connection)  
  6. :  
  7. base(connection)  
  8. {  
  9. }  
  10. public NewCreateDB(System.Data.IDbConnection connection)  
  11. :  
  12. base(connection)  
  13. {  
  14. }  
  15. }  
  16.  
  17. [Table(Name = "Person")]  
  18. public partial class Person : INotifyPropertyChanged  
  19. {  
  20.  
  21. private int _PersonID;  
  22. private string _PersonName;  
  23. private System.Nullable<int> _Age;  
  24.  
  25. public Person() { }  
  26.  
  27. [Column(Storage = "_PersonID"DbType = "INT",  
  28. IsPrimaryKey = true)]  
  29. public int PersonID  
  30. {  
  31. get { return this._PersonID; }  
  32. set  
  33. {  
  34. if ((this._PersonID != value))  
  35. {  
  36. this.OnPropertyChanged("PersonID");  
  37. this._PersonID = value;  
  38. this.OnPropertyChanged("PersonID");  
  39. }  
  40. }  
  41. }  
  42.  
  43. [Column(Storage = "_PersonName"DbType = "NVarChar(30)")]  
  44. public string PersonName  
  45. {  
  46. get { return this._PersonName; }  
  47. set  
  48. {  
  49. if ((this._PersonName != value))  
  50. {  
  51. this.OnPropertyChanged("PersonName");  
  52. this._PersonName = value;  
  53. this.OnPropertyChanged("PersonName");  
  54. }  
  55. }  
  56. }  
  57.  
  58. [Column(Storage = "_Age"DbType = "INT")]  
  59. public System.Nullable<int> Age  
  60. {  
  61. get { return this._Age; }  
  62. set  
  63. {  
  64. if ((this._Age != value))  
  65. {  
  66. this.OnPropertyChanged("Age");  
  67. this._Age = value;  
  68. this.OnPropertyChanged("Age");  
  69. }  
  70. }  
  71. }  
  72.  
  73. public event PropertyChangedEventHandler PropertyChanged;  
  74. protected virtual void OnPropertyChanged(string PropertyName)  
  75. {  
  76. if ((this.PropertyChanged != null))  
  77. {  
  78. this.PropertyChanged(this,  
  79. new PropertyChangedEventArgs(PropertyName));  
  80. }  
  81. }  

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

  1. //新建一个临时文件夹来存放新建的数据库  
  2. string userTempFolder = Environment.GetEnvironmentVariable  
  3. ("SystemDrive") + @"\YJingLee";  
  4.  Directory.CreateDirectory(userTempFolder);  
  5.  
  6. //新建数据库NewCreateDB  
  7. string userMDF = System.IO.Path.Combine(userTempFolder,  
  8. @"NewCreateDB.mdf");  
  9. string connStr = String.Format(@"Data Source=.\SQLEXPRESS;  
  10. AttachDbFilename={0};Integrated Security=True;  
  11. Connect Timeout=30;User Instance=True;   
  12. Integrated Security = SSPI;", userMDF);  
  13. NewCreateDB newnewDB = new NewCreateDB(connStr);  
  14. newDB.CreateDatabase();  
  15.  
  16. //插入数据并查询  
  17. var newnewRow = new Person  
  18. {  
  19. PersonID = 1,  
  20. PersonName = "YJingLee",  
  21. Age = 22 
  22. };  

【编辑推荐】

  1. Linq匿名类型简单概述
  2. Linq随机读取数据浅析
  3. Linq Lambda表达式全面分析
  4. Linq扩展方法简单分析
  5. 初探Linq局部变量类型
责任编辑:佚名 来源: IT168
相关推荐

2009-09-08 14:56:55

强类型DataContLinq to SQL

2009-09-09 15:44:22

Linq DataCo

2009-09-14 10:42:03

LINQ生成字符串

2023-01-09 09:52:06

Bash字符串

2009-09-15 13:20:34

LINQ DataCo

2009-09-17 11:16:44

LINQ代码生成

2009-09-13 21:52:16

LINQ字符串

2010-11-08 15:58:54

SQL Server连

2010-06-17 16:00:59

SQL Server

2010-06-17 16:13:05

SQL Server

2010-09-09 11:48:00

SQL函数字符串

2010-10-12 11:13:51

2010-09-13 15:50:03

sql server数

2009-12-24 09:49:02

ADO.Net连接池

2009-08-20 18:23:29

C#中SQL连接字符串

2010-06-17 16:38:14

MS SQL Serv

2010-06-28 15:18:51

SQL Server

2010-09-13 15:12:26

sql server字

2010-11-08 17:07:41

SQL Server字

2010-05-26 15:14:39

MySQL字符串
点赞
收藏

51CTO技术栈公众号