LINQ to SQL数据开发

LINQ统一了查询语法,可以把任何数据源作为查询对象。
LINQ查询必须包括***获取数据源,创建查询,执行查询***3部分内容。
例1 把数组作为数据源

protected void Page_Load(object sender,EventArgs e)
{
   string[] User_name = {"王一","李二","赵三","陈四","王五"};
  
   var v_namae = from p in User_name 
                 where P.Indexof("王") == 0
                 select p;

  foreach(var v in v_namae)//将LINQ查询结果输出页面
  {
     Response.Write(v.ToString() + "<br/>");
  }
}

LINQ to SQL 就是将LINQ查询翻译成SQL语句

LINQ to SQL 对象模型关系数据模型
实体类
类成员
关联外键关系
方法存储过程或函数

例2
1.服务器资源管理器中:添加数据库连接
2.添加LINQ to SQL 类。创建类过程中,会自动创建一个数据上下文。
3.将数据表拖动到数据区中,以创建LINQ to SQL 实体类’customers’。实体类customers映射数据表“customers”.
记住在LINQ to SQL 类中创建,修改后要先保存,不然程序没法确认该LINQ to SQL 类的变更结果。
4.打开Default.aspx.cs

protected void Page_Load(object sender,EventArgs e)
{
   //获取数据源
    Customers_ClassDataContext My_Customer = new Customers_ClassDataContext();//定义LINQ to SQL实体的一个实例
   //创建查询
    var this_Customer = from V_Customer in My_Customer.Customers
                        where V_Customer.ContactTitle.Indexof("Sales") >= 0
                        order by V_Customer.ContactName
                        select V_Customer.ContactName;
    //执行查询
    foreach (Var c_name in this_Customer)//输出页面显示
    {
       Response.Write(c_name + "<br/>");
    }
}

DataContext与实体类
DataContext又称为数据上下文。是一个LINQ to SQL 类。该类充当SQL server数据库与LINQ to SQL 实体类之间的管道。
例子
搭建开发环境
1.将数据库复制到站点的“App_Data”目录下
2.单击“添加引用” 选择“system.Data.Linq”程序集。添加程序集引用是为了在LINQ to SQL 开发中,可以直接使用DataContext类和Table类。
定义实体类
1.添加一个类:Customers.
添加System.Data.Linq 和System.Data.Linq.Mapping两个命名空间
2.根据要映射数据表各字段及数据类型,设置类的属性。

[Table(Name = "Customers")]//定义映射数据表名
public class Cusotmers
{
   [Column(Name = "CusotomerID,IsPrimaryKey = true")]//定义映射字段
   public string CusotmerID//对应字段
   { get; set; }
   ...
   [Column(Name = "Fax")]
   public string Fax
   { get; set;}
   
}

类似定义
https://docs.microsoft.com/zh-cn/aspnet/web-forms/overview/getting-started/getting-started-with-aspnet-45-web-forms/shopping-cart

创建DataContext连接数据库
就是为了连接数据库,将LINQ to SQL 对象模型映射到相应的数据库。只有创建一个DataContext,并通过该类下的GetTable方法将数据表映射连接到实体类,才可以实现查询操作数据库的目的。
1.添加GridView控件
2.Page_Load事件中添加代码

DataContext db = new DataContext(Server.MapPath("App_Data\\northwnd.mdf"));//此处参数String 是数据文件的绝对路径,当然也可以数据库连接字符串

Table<Cusomers> Customers = db.GetTable<Customers>();//定义LINQ to SQL 实体的一个实例
//此刻可添加日志方便LINQ调试
//StreamWriter Log_txt = new StreamWriter(Server.MapPath("log.txt"),true);
//db.Log = Log_txt;
var this_Customers = from V_Customer in Customers 
                     where V_Customer.ContactTitle.IndexOf("Sales") >= 0
                     order by V_Customer.ContactName
                     select new {用户编号 = V_Customer.CustomerID,
                                   用户名 = V_Customer.ContactName,};
                
GridView1.DataSource = this_Customers;
GridView1.DataBind();

//Log_txt.Close();//关闭文件流

由于LINQ to SQL 要转换为SQL查询,才可以查询操作关系数据库。
DataContext类型也提供了执行SQL语句的功能。
例子
1.在以上的例子上 添加新页面,为页面添加GridView控件。设置其AutoGenerateColumns属性为false
2.为GridView添加2列,类型为数据绑定(BoundField)。
一列字段名为CustomersID,表头为用户编号。
另一列字段为ContactName,表头为用户名。3
3.Page_Load

DataContext db = new DataContext(Server.MapPath("App_Data\\northwnd.mdf"));

db.CommandTimeout = 360;

string newcity = "销售管理员";
string com_txt;

com_txt = "update Customer set ContactName = ContactName + {0}"+
          "where ContactTitle like '%Sales%'";
db.ExecuteCommand(com_txt,newcity);//执行修改变更查询

com_txt = "select Top 6 Customers where ContactTitle like '%Sales%'";

GridView1.Datasource = db.ExecuteQuery<Customers>(com_txt);
GridView1.DataBind();
db.Connection.Close();

ExecuteCommand(String,Object[])方法执行修改查询
ExecuteQuery方法查询数据,返回泛型数据表Customers,并绑到数据控件中。

创建强类型Datacontext
通过强类型DataContext还可以创建,删除数据库。

Customers_Datecontext db = new Customers_Datacontext(Server.MapPath("App_Data\\test.mdf"));//新增一个数据库文件text.mdf.根据Customers实体类创建数据库的

StreamWriter Log_txt = new StreamWriter(Server.MapPath("log.txt"),true);
db.Log = Log_txt;

db.CreateDatabase();//创建数据库
//db.DeleteDatabase();删除数据库

db.Connection.Close();

LINQ to SQL 查询语法(略)
查询操作语句
主要是指数据的插入,更新,删除等语句。
LINQ查询操作语句主要表现为InsertOnSubmit(Tentity),DeleteOnSubmit(Tentity).
其中参数Tentity为要插入,更新,删除的实体。
最后还要通过数据上下文的SubmitChanges方法,才可以把结果更新到数据库中。
例子
创建LINQ to SQL 类为Data,并把数据表拖到数据区中,以创建4个实体类。
1.LINQ 插入操作

DataDataContext db = new DataDataContext();//创建强类型的一个实例

var cutw = new Customers 
{
   CustomerID = "001",
   ContactName = "Wenlive",
   Country = "China",
   CompanyName = "jyworke"
 };

db.Customers.InsertOnSubmint(cutw);

db.SubmitChanges();

LINQ更新操作

/创建强类型的一个实例

var Cust = db.Customers.where (p => p.ContactName == “Wenlive”);//查询用户

foreach(var p in Cust)
{
p.ContactTitle = “handlers”;//修改公司职位
p.Address = “There are good where”;//修改联系地址
}

db.SubmitChanges();
GridView1.DataSource = Cust;
GridView1.DataBind();

LINQ 删除操作

DataDataContext db = new DataDataContext();

var Del = db.Customers.First(p => p.CustomersID == "001");//查询用户

db.Customers.DeleteOnSubmit(Del);//删除该用户

var Del_t = db.GetChangeSet().Deletes;//获取执行删除操作的实体

GridView1.DataSource = De1_t
GridView.DataBind();

db.SubmitChanges();
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值