Amazing-Ren

导航

例子:Database - Linq to sql

DataContext类型(数据上下文)是System.Data.Linq命名空间下的重要类型,用于把查询句法翻译成SQL语句,以及把数据从数据库返回给调用方和把实体的修改写入数据库。
  •        DataContext提供了以下一些使用的功能:
  •        以日志形式记录DataContext生成的SQL
  •        执行SQL(包括查询和更新语句)
  •        创建和删除数据库

 

DataContext 是通过数据库连接映射的所有实体的源。 它会跟踪您对所有检索到的实体所做的更改,并且保留一个“标识缓存”,该缓存确保使用同一对象实例表示多次检索到的实体。

通常情况下,DataContext 实例设计为持续一个“工作单位”,但您的应用程序可以定义该持续周期。 DataContext 是轻量的,创建它不需要很大的开销。 典型的 LINQ to SQL 应用程序在方法范围内创建 DataContext 实例,或将这些实例创建为生存期较短的类(这些类表示相关数据库操作的逻辑集合)的成员。

 

1. 创建数据库表对应实例

        [Table]
        public class Employee
        {
            [Column(IsPrimaryKey = true)]
            public int EmployeeID
            {
                get;
                set;
            }
            [Column(CanBeNull = false)]
            public string EmployeeName
            {
                get;
                set;
            }
            [Column(CanBeNull = false)]
            public string EmployeeAge
            {
                get;
                set;
            }
        }

 

2. 对DdataContext做个简单封装

    public class EmployeeDataContext : DataContext
    {
        public EmployeeDataContext(string connectionString)
            : base(connectionString)
        {
        }
        public Table<Employee> Employees
        {
            get
            {
                return this.GetTable<Employee>();
            }
        }
    }

 

 

private const string strConnectionString = @"isostore:/EmployeeDB.sdf";

 

3. 创建数据库

            using (EmployeeDataContext Empdb = new EmployeeDataContext(strConnectionString))
            {
                if (Empdb.DatabaseExists() == false)
                {
                    Empdb.CreateDatabase();
                }

 

4. 添加一条记录

            
private const string strConnectionString = @"isostore:/EmployeeDB.sdf";

using (EmployeeDataContext Empdb = new EmployeeDataContext(strConnectionString))
            {
                Employee newEmployee = new Employee
                {
                    EmployeeID = Convert.ToInt32(txtEmpid.Text),
                    EmployeeAge = txtAge.Text.ToString(),
                    EmployeeName = txtName.Text.ToString()
                };

                Empdb.Employees.InsertOnSubmit(newEmployee);
                Empdb.SubmitChanges();


5. 查找一条记录

            using (EmployeeDataContext Empdb = new EmployeeDataContext(strConnectionString))
            {
                IQueryable<Employee> EmpQuery = from Emp in Empdb.Employees where Emp.EmployeeName == txtName.Text select Emp;
                Employee EmpRemove = EmpQuery.FirstOrDefault();
                Empdb.Employees.DeleteOnSubmit(EmpRemove);
                Empdb.SubmitChanges();
                MessageBox.Show("Employee Deleted Successfully!!!");
            }

 

6. 删除数据库

            using (EmployeeDataContext Empdb = new EmployeeDataContext(strConnectionString))
            {
                if (Empdb.DatabaseExists())
                {
                    Empdb.DeleteDatabase();

                }
            }

 

 

 

 

 

 

 

 

 

 

 

posted on 2013-08-20 13:45  Amazing-Ren  阅读(228)  评论(0编辑  收藏  举报