关闭

[MSDN]C# 3.0 锐利体验系列课程 之四 查询表达式LINQ (2)

620人阅读 评论(0) 收藏 举报

 C# 3.0 锐利体验系列课程(3):
查询表达式LINQ (2)
李建忠
jianzhong.lee@gmail.com
祝成科技高级培训讲师
www.softcompass.com

LINQ to SQL简介
•面向对象领域:
一切围绕对象(字段,方法,引用…)
•关系型数据库领域:
一切围绕表格数据(行,列,关系)
•Linq to SQL 将SQL的模式信息集成到CLR元数据
中,自然地将面向对象领域的对象与关系型数据库
中的表格数据相互转化,从而允许我们使用LINQ来
便捷地访问关系数据库,
• Linq to SQL是作为ADO.NET的一个重要组件,而
非完全替代品。

实体类映射
[Table(Name = "Category")]
public class Category
{
[Column(IsPrimaryKey = true)]
public string CategoryId;
[Column]
public string Name;
[Column]
public string Descn;
}
注意,其中的[Table] 特性表示将Category类与数据库中名
称为Category的表相对应。[Column] 特性则对应数据库中的
列。

DataContext 数据上下文对象
DataContext db = new DataContext("Password=0398;User
ID=sa;Initial Catalog=MSPetShop4;Data
Source=HUANGHE2");

Table<Category> Categorys = db.GetTable<Category>();
var result =
from c in Categorys
select c;
注意,DataContext非常类似于数据库链接对象,但是它为
Linq to SQL提供了更多支持。

 定义基本关系(1)
[Table(Name = "Category")]
public class Category {
…..
private EntitySet<Product> products;
[Association(Storage = "products", OtherKey = "CategoryId")]
public EntitySet<Product> Products
{
get { return this.products; }
set { this.products.Assign(value); }
}
}
注意, Products 映射了Category与Product之间的一对多关系。

定义基本关系(2)
[Table(Name = "Product")]
public class Product
{
…….
private EntityRef<Category> category;
[Association(Storage = "category", ThisKey = "CategoryId")]
public Category Category
{
get { return this.category.Entity; }
set { this.category.Entity = value; }
}
}
注意, Category映射了Product与Category之间的一对多关系。

更改数据源
string id = “DOGS";
var cat = db.Categories.Single(c => c. CategoryId == id);
cat. Name = “New Dogs";
Product p = new Product { …….};
cat.Products.Add(p);
db.SubmitChanges();
注意, SubmiChanges() 完成了对象层到数据层的更改。

 

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:273318次
    • 积分:2967
    • 等级:
    • 排名:第11801名
    • 原创:45篇
    • 转载:38篇
    • 译文:1篇
    • 评论:32条
    最新评论