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

推荐订阅源

G
GRAHAM CLULEY
博客园_首页
博客园 - Franky
Engineering at Meta
Engineering at Meta
雷峰网
雷峰网
The GitHub Blog
The GitHub Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
C
Cisco Blogs
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
MyScale Blog
MyScale Blog
Apple Machine Learning Research
Apple Machine Learning Research
宝玉的分享
宝玉的分享
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
F
Full Disclosure
Cloudbric
Cloudbric
J
Java Code Geeks
C
Cybersecurity and Infrastructure Security Agency CISA
Last Week in AI
Last Week in AI
The Hacker News
The Hacker News
量子位
T
The Blog of Author Tim Ferriss
T
Threatpost
Cisco Talos Blog
Cisco Talos Blog
C
Check Point Blog
AWS News Blog
AWS News Blog
Blog — PlanetScale
Blog — PlanetScale
T
Threat Research - Cisco Blogs
Project Zero
Project Zero
Scott Helme
Scott Helme
N
Netflix TechBlog - Medium
A
About on SuperTechFans
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
T
Tenable Blog
S
Schneier on Security
T
Tor Project blog
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Hacker News: Ask HN
Hacker News: Ask HN
MongoDB | Blog
MongoDB | Blog
Y
Y Combinator Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
H
Heimdal Security Blog
T
Tailwind CSS Blog
P
Privacy International News Feed
爱范儿
爱范儿
Google DeepMind News
Google DeepMind News
D
DataBreaches.Net
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
博客园 - 叶小钗
人人都是产品经理
人人都是产品经理
The Last Watchdog
The Last Watchdog

博客园 - 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)
{
...
}