• LINQ to SQL 数据库与LINQ对象的关系


    LINQ的优点是提供了在代码中使用强类型化对象,这些对象还映射到以后的数据库对象上

    下面是数据库对象和LINQ对象的映射关系

    数据库对象 LINQ对象
    数据库 DataContext
    类和集合
    视图 类和集合
    属性
    关系 嵌套集合
    存储过程 方法

    左列是数据库,数据库是一个完整的实体--表、视图、触发器、存储过曾构成了数据库

    右列是LINQ对象

    DataContext对象,他绑定到数据库上,为了与数据库进行必要的交互操作,该对象包含一个连接字符串,并管理所发生的所有事物的处理,还负责记录操作,管理数据的输出。Data对象全面管理与数据库的事务处理。

    数据库关系,各个对象之间映射的嵌套集合。

    存储过程,会映射为DataContext实例的方法上

    在调用一个Linq查询 dc.Products 的时候

    查询会被LINQ to SQL 转换成为SQL查询语句,提供给数据库,LINQ to SQL 层通过这个查询从数据库中获得行数据,把返回的数据编程强力型对象集合,便于使用。

    DataContext对象

    DataContext对象管理所发生的所有事物的处理,并提供操作接口

    实例化DataContext对象有三个可选参数(数据名,连接串,另一个DataContext对象)

    1.使用ExecuteQuery,查询所有产品集合

    public void UsingExecuteQuery()
          {
              // using ExecuteQuery
              //获得一个DataContext对象,注意他使用的是DataContext
              DataContext dc = new DataContext(ConfigurationManager.ConnectionStrings["NorthwindConnectionString"].ToString());
              //执行一个明文查询,并返回一个集合,注意泛型的使用
              IEnumerable<Products> myProducts = dc.ExecuteQuery<Products>("SELECT * FROM PRODUCTS", "");
              //便利集合
              foreach (Products item in myProducts)
              {
                  Response.Write(item.ProductID + " | " + item.ProductName + "<br />");
              }
    
          }

    如果想要添加参数的查询可以使用以下占位符的形式

    IEnumerable<Products> myProducts = dc.ExecuteQuery<Products>("SELECT * FROM PRODUCTS WHERE UnitsInStock > {0}", 50);

    2.Connection 属性 返回一个 System.Data.SqlClient.SqlConnection实例

    public void Connection()
            {
                //注意这里使用的是NorthwindDataContext对象
                NorthwindDataContext dc = new NorthwindDataContext();
                Response.Write(dc.Connection.ConnectionString);
            }

    3.Transaction 属性

    如果有一个可以使用的Ado.net 事物,就可以使用Transaction 属性把这个事务处理赋予DataContext对象实例。 还可以像下面是用 TransactionScope 实现事务,如果数据库操作失败,就回退所有操作,返回最初状态

    public void Transaction()
            {
                NorthwindDataContext dc = new NorthwindDataContext();
    
                using (TransactionScope myScope = new TransactionScope())
                {
                    //新建产品
                    Products p1 = new Products() { ProductName = "Bill's Product" };
                    //插入这个产品,并且获得插入后的p1信息
                    dc.Products.InsertOnSubmit(p1);
    
                    Products p2 = new Products() { ProductName = "Another Product" };
                    dc.Products.InsertOnSubmit(p2);
    
                    try
                    {
                        dc.SubmitChanges();
                        //返回刚刚插入数据的ID值
                        Response.Write(p1.ProductID + "<br />");
                        Response.Write(p2.ProductID + "<br />");
                    }
                    catch (Exception ex)
                    {
                        Response.Write(ex.ToString());
                    }
                    //指示操作以完成
                    myScope.Complete();
                }

    4.DataContext 其他的方法和属性

    方法:

    image

    属性:

    image

    Table<TEntity> 对象

    Table<TEntity>对象表示在数据库中操作的表,数据库中的表都会表示成Table<TEntity>的实例,比如之前的Product可以表示成Table<Product>,有许多方法是可以用于Table<TEntity>对象,其中一些如下:

    image

    冯瑞涛
  • 相关阅读:
    用JS获取地址栏参数的方法(超级简单)
    js全选
    梦幻西游手游三界奇缘答题 文字解答
    父级div height:auto无效解决办法
    DropDownList赋值,绑定,传值
    《梦幻西游》手游人宠抗防修炼点修消耗表
    使客户端的控件ID保持不变,不受母版页的影响
    无法读取项目文件 .csproj
    七天学会ASP.NET MVC (一)——深入理解ASP.NET MVC
    MVC控件解析
  • 原文地址:https://www.cnblogs.com/finehappy/p/1579205.html
Copyright © 2020-2023  润新知