第4讲:查询表达式LINQ(2)
2007.7.20 李建忠
LINQ to SQL简介
面向对象领域:
一切围绕对象(字段,方法,引用...)
关系型数据库领域:
一切围绕表格数据(行,列,关系)
Linq to SQL将SQL的模式信息集成到CLR元数据中,自然地将面向对象领域的对象与关系型数据库中的表格数据相互转化,从而允许我们使用LINQ来便捷地访问关系型数据库。
Linq to SQL是作为ADO.NET的一个重要组件,而非完全替代品。
实体类映射
注意,其中的[Table]特性表示将Category类与数据库中名称为Category的表相对应。[Column]特性则对应数据库中的列。如果属性或者字段没有标记特性,那么说明数据库是不会去理会这个属性或者字段的。
DataContext 数据上下文对象
注意,DataContext非常类似于数据库链接对象,但是它为Linq to SQL提供了更多支持。
Linq to SQL 查询
在Form刚刚Load的时候,就会显示所有类别信息
MSPetShop是一个强类型的DataContext,Linq to SQL一般推荐使用强类型的DataContext。
强类型的DataContext我们可以直接调用.Categorys,使用起来更方便。
这样查询出来的c直接就是强类型的对象,因为它已经是经过数据库到对象映射之后的结果了。
而以前的这种方式不是对象方式,只是一个个行列的信息,需要自己去组合。而且Select语句需要在数据库服务器里面作检查,而现在任何的语法错误直接就会被C#编译器做检查,这样就保证了大部分粗心的语法错误被解析。
定义基本关系
注意,Products映射了Category与Product之间的一对多关系。CategoryId对于Category表是主键,而对于Product表是外键。
注意,Category映射了Product与Category之间的一对多关系。
Linq to SQL 关系编程
EntitySet是集合关系,EntityRef是引用关系。
这是两个表的关联查询。先在Category查具体的某一列,然后寻找这一列里面Product列表的某一项是否选中,选出这个Product。
更改数据源
注意,SubmitChanges()完成了对象层到数据层的更改。
Linq to SQL 更改数据源
2010.11.12