LINQ to SQL语句(22)之DataContext

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。

public class NewCreateDB : DataContext
{
  public Table<Person> Persons;
  public NewCreateDB (string connection)
    :
    base(connection)
  {
  }
  public NewCreateDB(System.Data.IDbConnection connection)
    :
    base(connection)
  {
  }
}
[Table(Name = "Person")]
public partial class Person : INotifyPropertyChanged
{
  private int _PersonID;
  private string _PersonName;
  private System.Nullable<int> _Age;
  public Person() { }
   [Column(Storage = "_PersonID", DbType = "INT",
    IsPrimaryKey = true)]
  public int PersonID
  {
    get { return this._PersonID; }
    set
    {
      if ((this._PersonID != value))
      {
         this.OnPropertyChanged("PersonID");
         this._PersonID = value;
        this.OnPropertyChanged ("PersonID");
      }
    }
  }
  [Column(Storage = "_PersonName", DbType = "NVarChar(30)")]
  public string PersonName
   {
    get { return this._PersonName; }
    set
    {
      if ((this._PersonName != value))
       {
        this.OnPropertyChanged ("PersonName");
        this._PersonName = value;
        this.OnPropertyChanged ("PersonName");
      }
    }
   }
  [Column(Storage = "_Age", DbType = "INT")]
  public System.Nullable<int> Age
  {
    get { return this._Age; }
    set
     {
      if ((this._Age != value))
       {
        this.OnPropertyChanged("Age");
        this._Age = value;
         this.OnPropertyChanged("Age");
      }
     }
  }
  public event PropertyChangedEventHandler PropertyChanged;
  protected virtual void OnPropertyChanged (string PropertyName)
  {
    if ((this.PropertyChanged != null))
    {
       this.PropertyChanged(this,
        new PropertyChangedEventArgs(PropertyName));
    }
  }
}

时间: 2024-11-05 19:02:33

LINQ to SQL语句(22)之DataContext的相关文章

LINQ体验(9)——LINQ to SQL语句之Insert/Update/Delete操作

我们继续讲解LINQ to SQL语句,这篇我们来讨论Insert/Update/Delete操作 .这个在我们的程序中最为常用了.我们直接看例子. Insert/Update/Delete操作插入(Insert)1.简单形式 说明:new一个 对象,使用InsertOnSubmit方法将其加入到对应的集合中,使用SubmitChanges ()提交到数据库. NorthwindDataContext db = new NorthwindDataContext(); var newCustome

LINQ体验(8)—LINQ to SQL语句之Union All/Union/Intersect和Top/Bottom和Pag

LINQ体验(8)-LINQ to SQL语句之Union All/Union/Intersect和Top/Bottom和Paging和SqlMethods 我们继续讲解LINQ to SQL语句,这篇我们来讨论Union All/Union/Intersect操作和Top/Bottom操作和Paging操作和SqlMethods操作 . Union All/Union/Intersect操作 适用场景:对两个集合的处理,例如追加.合并.取相同项.相交项等等. Concat(连接) 说明:连接不

LINQ体验(7)-LINQ to SQL语句之Group By/Having和Exists/In/Any/All/Contains

我们继续讲解LINQ to SQL语句,这篇我们来讨论Group By/Having操作符和 Exists/In/Any/All/Contains操作符. Group By/Having操作符 适用 场景:分组数据,为我们查找数据缩小范围. 说明:分配并返回对传入 参数进行分组操作后的可枚举对象.分组:延迟 1.简单形式: var q = from p in db.Products group p by p.CategoryID into g select g; 语句描述:使用Group By

LINQ体验(5)——LINQ to SQL语句之Select/Distinct和Count/Sum/Min/Max/Avg

上一篇讲述了LINQ,顺便说了一下Where操作,这篇开始我们继续说LINQ to SQL语句,目的让大家从语句的角度了解LINQ,LINQ包括LINQ to Objects.LINQ to DataSets.LINQ to SQL.LINQ to Entities.LINQ to XML,但是相对来说LINQ to SQL在我们程序中使用最多,毕竟所 有的数据都要在数据库运行着各种操作.所以先来学习LINQ to SQL,其它的都差不多了,那么就从Select说起吧,这个在编写程序中也最为常

LINQ体验(16)——LINQ to SQL语句之DataContext

DataContext DataContext作为LINQ to SQL框架的主入口点,为我们提供 了一些方法和属性,本文用几个例子说明DataContext几个典型的应用. 创建和删除数据库 CreateDatabase方法用于在服务器上创建数据库. DeleteDatabase方法用于删除由DataContext连接字符串标识的数据库. 数据库的名称有以下方法来定义: 如果数据库在连接字符串中标 识,则使用该连接字符串的名称. 如果存在DatabaseAttribute属性 (Attribu

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

用户定义函数 我们可以在LINQ to SQL中使用用户定义函数.只要把 用户定义函数拖到O/R设计器中,LINQ to SQL自动使用FunctionAttribute属性 和ParameterAttribute属性(如果需要)将其函数指定为方法.这时,我们只需 简单调用即可. 在这里注意:使用用户定义函数的时候必须满足以下形 式之一,否则会出现InvalidOperationException异常情况. 具有正确映 射属性的方法调用的函数.这里使用FunctionAttribute属性和 P

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

ADO.NET与LINQ to SQL 它基于由 ADO.NET 提供程序模型提供的服务.因 此,我们可以将 LINQ to SQL 代码与现有的 ADO.NET 应用程序混合在一起,将 当前 ADO.NET 解决方案迁移到 LINQ to SQL. 1.连接 在创建 LINQ to SQL DataContext 时,可以提供现有 ADO.NET 连接.对 DataContext 的所 有操作(包括查询)都使用所提供的这个连接.如果此连接已经打开,则在您使 用完此连接时,LINQ to SQL

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

对象加载延迟加载 在查询某对象时,实际上你只查询该对象.不会同时自 动获取这个对象.这就是延迟加载. 例如,您可能需要查看客户数据和 订单数据.你最初不一定需要检索与每个客户有关的所有订单数据.其优点是你 可以使用延迟加载将额外信息的检索操作延迟到你确实需要检索它们时再进行. 请看下面的示例:检索出来CustomerID,就根据这个ID查询出OrderID. var custs = from c in db.Customers where c.City == "Sao Paulo" s

LINQ体验(15)——LINQ to SQL语句之用户定义函数

用户定义函数 我们可以在LINQ to SQL中使用用户定义函数.只要把用户 定义函数拖到O/R设计器中,LINQ to SQL自动使用FunctionAttribute属性和 ParameterAttribute属性(如果需要)将其函数指定为方法.这时,我们只需简 单调用即可. 在这里注意:使用用户定义函数的时候必须满足以下形式 之一,否则会出现InvalidOperationException异常情况. 具有正确映射 属性的方法调用的函数.这里使用FunctionAttribute属性和 P