LINQ to SQL
LINQ to SQL概览
- 把.net 类和SQL数据通过关系进行映射
- 把LINQ查询转化为SQL语言进行执行
- 支持插入,更新,删除操作
- 支持实体级别的验证规则
- 构建于ADO.NET之上集成连接池和事务处理
创建对象映射
三种方式:
- 手动创建:为现有的对象添加属性
添加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;}
}
- 使用提供的设计器来自动生成对象映射
小插曲:跟着视频一起操作,视频里创建的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();


浙公网安备 33010602011771号