惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

S
Schneier on Security
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
Know Your Adversary
Know Your Adversary
G
GRAHAM CLULEY
V
Vulnerabilities – Threatpost
P
Palo Alto Networks Blog
Security Latest
Security Latest
P
Privacy & Cybersecurity Law Blog
Simon Willison's Weblog
Simon Willison's Weblog
A
Arctic Wolf
T
Tor Project blog
T
Threatpost
NISL@THU
NISL@THU
I
InfoQ
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Apple Machine Learning Research
Apple Machine Learning Research
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
aimingoo的专栏
aimingoo的专栏
Microsoft Azure Blog
Microsoft Azure Blog
WordPress大学
WordPress大学
K
Kaspersky official blog
W
WeLiveSecurity
L
LINUX DO - 热门话题
小众软件
小众软件
Recorded Future
Recorded Future
B
Blog RSS Feed
H
Help Net Security
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
IT之家
IT之家
L
Lohrmann on Cybersecurity
Last Week in AI
Last Week in AI
Stack Overflow Blog
Stack Overflow Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
阮一峰的网络日志
阮一峰的网络日志
V
Visual Studio Blog
Blog — PlanetScale
Blog — PlanetScale
雷峰网
雷峰网
爱范儿
爱范儿
C
CXSECURITY Database RSS Feed - CXSecurity.com
T
Threat Research - Cisco Blogs
C
Cyber Attacks, Cyber Crime and Cyber Security
H
Hacker News: Front Page
博客园 - 三生石上(FineUI控件)
N
Netflix TechBlog - Medium
P
Proofpoint News Feed
有赞技术团队
有赞技术团队
N
News and Events Feed by Topic
云风的 BLOG
云风的 BLOG
Scott Helme
Scott Helme
V2EX - 技术
V2EX - 技术

博客园 - Valens

IIS无法启动:存储空间不足解决办法 做程序员的,平时眼睛总对着代码,很累!看看美女放松放松哦! - Valens - 博客园 How To: Encrypt Configuration Sections in ASP.NET 2.0 Using RSA Mark:使用线程处理(C# 编程指南) 交集:通过使用默认的相等比较器对值进行比较生成两个序列的交集 就事网上线了 About .net Format 【技巧】asp的找不到文件的问题 【翻译】父窗口关闭的时候子窗口也同时关闭 - Valens - 博客园 【翻译】Visual Studio Smart Tag Expansion 小技巧 【翻译】使用ASP.NET 2.0记录错误 ListView提示和技巧 独有数据绑定控件ListView LINQ的标准查询操作符 轻松Web调试、扩展Reflector及更多内容 构建不带Web窗体的Web应用程序_ASP.NET MVC ASP.NET 应用程序的扩展策略 单页界面和AJAX模式 删除Visual Studio IDE最近打开文件和项目列表
LINQ to SQL StepByStep (1)
Valens · 2008-09-10 · via 博客园 - Valens

2008-09-10 16:38  Valens  阅读(349)  评论()    收藏  举报

首先关心其类库:

System.Data.Linq
包含支持在 LINQ to SQL 应用程序中与关系数据库进行交互的类。
LINQ to SQL 是一种技术,可提供用于将关系数据作为对象管理的运行时基础结构。

System.Data.Linq.Mapping
包含用于生成表示关系数据库的结构和内容的 LINQ to SQL 对象模型的类。

什么是LINQ to SQL技术呢?
是 .NET Framework 3.5 版的一个组件,提供了用于将关系数据作为对象管理的运行时基础结构。
在 LINQ to SQL 中,关系数据库的数据模型映射到用开发人员所用的编程语言表示的对象模型。当应用程序运行时,LINQ to SQL 会将对象模型中的语言集成查询转换为 SQL,然后将它们发送到数据库进行执行。当数据库返回结果时,LINQ to SQL 会将它们转换回您可以用您自己的编程语言处理的对象。
通过使用 LINQ to SQL,您可以使用 LINQ 技术访问 SQL 数据库,就像您访问内存中的集合一样。参考:这里

入门演练一:简单对象模型和查询

请访问:http://msdn.microsoft.com/zh-cn/library/bb386940.aspx

记录一下:

1、需要引用 System.Data.Linq 和 System.Data.Linq.Mapping 的命名空间,可能需要添加引用;

2、把表映射到实体类,在类声明的上方添加 TableAttribute 属性;   
TableAttribute 属于命名空间 System.Data.Linq.Mapping ,该属性可将某个类指定为与数据库表或视图相关联的实体类。LINQ to SQL将具有 TableAttribute 属性的类视为持久性类
LINQ to SQL 仅支持单表映射。即,实体类必须只映射到一个数据库表,且无法同时将数据库表映射到多个类。
可以使用 TableAttribute 属性 (Attribute) 的 Name 属性 (Property) 来指定表名称,并可以选择使用架构名称来限定表名称。如果未使用 Name 属性指定名称,则假定表名称与类名相同。 

3、相应的表字段也映射到实体类中的对应属性,在实体类属性声明的上方添加 CloumnAttribute 属性;
使用此属性可指定实体类的某个成员表示数据库表中的列。可以将此属性应用于 public、private 或 internal 类型的任何字段或属性。
当 LINQ to SQL 保存对数据库所做的更改时,只有那些标识为列的实体类成员是持久的。
使用逗号分隔属性 (Attribute) 的多个属性 (Property)。如:
[Column(Storage="_LastName", DbType="NVarChar(20) NOT NULL", 
         CanBeNull=false)]
public string LastName

4、使用 DataContext 建立与SQL的连接以及查询;
DataContext 对象在基于代码的数据结构与数据库本身之间建立连接。是用于从数据库检索对象和提交更改的主要通道。
表示 LINQ to SQL 框架的主入口点。
DataContext 是通过数据库连接映射的所有实体的源。它会跟踪您对所有检索到的实体所做的更改,并且保留一个“标识缓存”,该缓存确保使用同一对象实例表示多次检索到的实体。
DataContext 实例设计为持续一个“工作单位”,但您的应用程序可以定义该持续周期。
DataContext 是轻量的,创建它不需要很大的开销。
典型的 LINQ to SQL 应用程序在方法范围内创建 DataContext 实例,或将这些实例创建为生存期较短的类(这些类表示相关数据库操作的逻辑集合)的成员。

5、延迟执行,所创建查询代码只是描述查询,当程序运行到此处时,并未真正执行查询;
IQueryable<Customer> custQuery =
    from cust in Customers
    where cust.City == "London"
    select cust;

6、实际执行查询,查询表达式只有在需要结果时才会进行计算;
开始 foreach 迭代时,将会针对数据库执行 SQL 命令,并将对象具体化。
foreach (Customer cust in custQuery)
{
...
}