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

 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() 完成了对象层到数据层的更改。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值