LINQ to SQL

LINQ to SQL概览

  • 把.net 类和SQL数据通过关系进行映射
  • 把LINQ查询转化为SQL语言进行执行
  • 支持插入,更新,删除操作
  • 支持实体级别的验证规则
  • 构建于ADO.NET之上集成连接池和事务处理

Linq

创建对象映射

三种方式:

  • 手动创建:为现有的对象添加属性

添加Using指令

    • Using System.Data.Linq;
    • Using System.Data.Linq.Mapping;

使用属性声明

    • Table属性
    • Column属性
[Table(Name=“Customers”)]
public class Customer
{
	[column]
	public string CustomerID{get;set;}
	[column]
	public string City{get;set;}
}
  • 使用提供的设计器来自动生成对象映射

Open-mouthed smile小插曲:跟着视频一起操作,视频里创建的ASP.NET website,我看错了创建成了ASP.NET Web Application,视频里把LINQ TO SQL Class创建到了App_Code里,我也照做,但是发现Add asp.net Folder里没有App_Code这一项(以前也遇到过,没深究),就自己手动添加了App_Code,VS2008也识别了,添加LINQ TO SQL class到App_Code里但是Linq命名空间都无法识别,DLL我也引用了,搞了半天也不行,就把LINQ TO SQL 类拖出App_Code,居然好了

Linq的命名空间都识别了,新问题又来了,Default.aspx.cs里引用不了LINQ TO SQL类,我试着新建一个文件夹,然后再把LINQ TO SQL的类建在里面,Default.aspx.cs里可以引用了。仔细想想App_Code 的问题,为什么视频里放App_Code 可以,而我这就不行,发现原来项目类型不一样,以前就比较疑惑ASP.NET Website跟ASP.NET web Application的区别,查了一下http://www.cnblogs.com/moneyriver2006/archive/2012/05/19/2509302.html,这个问题一直没认真去思考,今天才算搞明白了。

 

  • SQLMetal工具生成映射

 

数据分页

Skip()和Take(),实际上是用RowNumber分页

            Data.InstrumentDataContext dc = new InstrumentDataContext();
            dc.Log = this.Response.Output;

            var result = from emp in dc.Instruments
                         select emp;
            int skipNumber = int.Parse(this.TextBox1.Text)*10;
            this.Repeater1.DataSource = result.Skip(skipNumber).Take(skipNumber);
            this.Repeater1.DataBind();

修改数据

  • 增加

Data.InstrumentDataContext dc = new InstrumentDataContext();
   Instrument inst = new Instrument()
                         {
                             Symbol = "ADD/DDA"
                         };
   dc.Instruments.InsertOnSubmit(inst);
   dc.SubmitChanges();

  • 修改

            Instrument ins = (from i in dc.Instruments
                               where i.Symbol == "AUD/USD"
                               select i).Single();
            ins.Symbol = "AUD/USS";
            dc.SubmitChanges();

  • 删除
          Instrument instr = (from i in dc.Instruments
                              where i.Symbol == "AUD/USD"
                              select i).Single();
            dc.Instruments.DeleteOnSubmit(instr);
            dc.SubmitChanges();

运行存储过程

将存储过程拖动到设计器,调用非常简单

this.GridView1.DataSource = dc.GetInstrument();

this.GridView1.DataBind();

posted @ 2012-07-18 17:07  Sam.Sun  阅读(374)  评论(0)    收藏  举报