LINQ to SQL ----数据上下文DataContext

DataContext概述:

DataContext是一个LINQ to SQL类,它充当SQL Server数据库与映射到该数据库的LINQ to SQL实体类之间的管道,它包含用于连接数据库以及操作数据库数据的连接字符串信息和方法。


DataContext类的属性:

1.连接属性Connection

2.事物属性Transaction

3.执行命令的最大时间属性CommandTimeout



处理Table类型的结果

Table主要操作数据库的方法

方法名称 说明

DeleteAllOnSubmit(TSubEntity)

将集合中的所有实体置于pending delete状态
DeleteOnSubmit 将此表中的实体置为pending delete状态
InsertAllOnSubmit(TSubEntity) 将集合中所有处于pending insert状态的实体添加到DataContext
InsertOnSubmit 将处于pending insert状态的实体添加到此Table(TEntity)

例如:将添加一条数据到Role表

private void InsertRole()
{
 LinqDBDataContext db = new LinqDBDataContext(LinqSystem.LinqDBConnectionString);
 Response.Write("添加前角色的数量:"+db.Role.Count()+"
"); //创建一个角色 Role role = new Role{RoleName="新的角色"}; //将新的角色添加到数据库中 db.Role.InsertOnSubmit(role); db.SubmitChanges(); Response.Write("添加后角色的数量:"+db.Role.Counht()); }



处理EntitySet类型的结果

1.添加实体的Add()方法


private void ShowEntitySetAdd()
{
 //1.创建LinqDB数据库上下文的实例
 LinqDBDataContext db = new LinqDBDataContext(LinqSystem.LinqDBConnectionString);
 //2.获取第一个用户的商品信息
 EntitySetproductsforFirstUser=db.UserInfo.First().Product;
 //3.显示商品数量
 Response.Write("添加商品之前的数量:"+productsforFirstUser.Count.ToString()+"
"); //4.创建一个新对象 Product p = new Product(); p.Name = "New Product"+DataTime.Now.ToString(); p.Price=100.0m; p.LasterData=DataTime.Now; p.PictureUrl=string.Empty; p.Remark=string.Empty; p.SaleNumber=0; p.Status=1; p.Stock=100; p.UserID=1; p.ViewCount=0; p.CategoryID=2; p.CreateDate=DateTime.Now; //5.添加对象到productsforFirstUser集合中 productsforFirstUser.Add(p); //6.提交更改到数据库 db.SubmitChanges(); //7.显示商品数量 Response.Write("添加商品之后的数量:"+productsforFirstUser.Count.ToString()+"
"); }


2.移除实体的方法

private void ShowEntitySetAdd()
{
 //1.创建LinqDB数据库上下文的实例
 LinqDBDataContext db = new LinqDBDataContext(LinqSystem.LinqDBConnectionString);
 //2.获取第一个用户的商品信息
 EntitySetproductsforFirstUser=db.UserInfo.First().Product;
 //3.显示商品数量
 Response.Write("移除商品之前的数量:"+productsforFirstUser.Count.ToString()+"
"); //4.使用RemoveAt()移除集合中的最后一个对象 productsforFirstUser.RemoveAt(productsforFirstUser.Count-1);" //5.提交更改到数据库 db.SubmitChanges(); //6.显示商品数量 Response.Write("移除商品之后的数量:"+productsforFirstUser.Count.ToString()+"
"); }


处理EntityRef类型的结果

EntityRef类用来处理一对多关系中的数据。

例如:Order表中所有记录与UserInfo相关的关系数据。

private void ShowEntityRefInfo()
{
  //1.创建LinqDB数据库上下文的实例
 LinqDBDataContext db = new LinqDBDataContext(LinqSystem.LinqDBConnectionString);
 //2.获取所有的订单信息
 List orders = db.Order.ToList();
 //3.显示订单信息
 foreach(Order order in orders)
{
 Response.Write("Order ID:"+order.ID.ToString()+",");
 Response.Write("Order No:"+Order.OrderNo.ToString()+"
"); //4.获取该订单的用户信息 UserInfo ui = order.UserInfo; Response.Write("UserID:"+ui.ID.ToString()+","); Response.Write("UserName"+ui.Username+","); Response.Write("E-mail:"+ui.Email+"

"); } }



处理ISingleResult类型的结果

ISingleResult泛型借口表示具有单个返回序列的映射函数的结果。

例如:从Category表中获取商品分类的数据

private void ShowCategoryInfo()
{
 //1.创建LinqDB数据库上下文的实例
 LinqDBDataContext db = new LinqDBDataContext(LinqSystem.LinqDBConnectionString);
 //2.获取存储过程返回的查询结果
 ISingleResult result = db.Pr_GetCategorys();
 //3.显示查询的信息
 foreach(Pr_GetCategorysResult r in result)
{
 Response.Write("ID:"+r.ID.ToString()+",");
 Response.Write("Name:"+r.Name+",");
 Response.Write("ParentID:"+r.ParentID.ToString()+",");
 Response.Write("ParentName"+r.ParentName+",");
 Response.Write("ShowOrder:"+r.ShowOrder.ToString()+",");
 Response.Write("SiblingCount:"+r.SiblingCount.ToString+",");
 Response.Write("SubCount:"+r.SubCount.ToString()+",");
 Response.Write("Remark:"+r.Remark+".

"); } }


你可能感兴趣的:(LINQ to SQL ----数据上下文DataContext)