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

推荐订阅源

K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
A
About on SuperTechFans
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
酷 壳 – CoolShell
酷 壳 – CoolShell
博客园 - 【当耐特】
W
WeLiveSecurity
博客园 - 三生石上(FineUI控件)
The Cloudflare Blog
I
InfoQ
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Application and Cybersecurity Blog
Application and Cybersecurity Blog
雷峰网
雷峰网
Hacker News - Newest:
Hacker News - Newest: "LLM"
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
T
Troy Hunt's Blog
S
SegmentFault 最新的问题
Help Net Security
Help Net Security
博客园_首页
博客园 - 叶小钗
O
OpenAI News
PCI Perspectives
PCI Perspectives
月光博客
月光博客
人人都是产品经理
人人都是产品经理
B
Blog RSS Feed
GbyAI
GbyAI
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
The Last Watchdog
The Last Watchdog
C
CXSECURITY Database RSS Feed - CXSecurity.com
有赞技术团队
有赞技术团队
D
Darknet – Hacking Tools, Hacker News & Cyber Security
腾讯CDC
Hacker News: Ask HN
Hacker News: Ask HN
I
Intezer
Y
Y Combinator Blog
阮一峰的网络日志
阮一峰的网络日志
Spread Privacy
Spread Privacy
T
Tailwind CSS Blog
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
量子位
Cyberwarzone
Cyberwarzone
The Hacker News
The Hacker News
N
News and Events Feed by Topic
P
Proofpoint News Feed
Scott Helme
Scott Helme
D
Docker
Know Your Adversary
Know Your Adversary
Recent Commits to openclaw:main
Recent Commits to openclaw:main
TaoSecurity Blog
TaoSecurity Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
T
Tor Project blog

博客园 - 徐鸿翼

《Programming .Net Components》学习笔记(十七) 离开家乡,前往北京 LINQ to SQL可视化调试工具 LINQ to SQL更新数据库操作 《Programming .Net Components》学习笔记(十六) 《Programming .Net Components》学习笔记(十五) 《Programming .Net Components》学习笔记(十四) LINQ的数据库查询应用 《Programming .Net Components》学习笔记(十三) 代码的坏味道,重构,模式 《Programming .Net Components》学习笔记(十二) 《辐射3》的宣传动画 《Programming .Net Components》学习笔记(十一) Visual Studio “Orcas”中LINQ设计器的使用 《Programming .Net Components》学习笔记(十) 乔布斯与盖茨历史性对话实录 《Programming .Net Components》学习笔记(九) 记住今天,《Starcraft II》在暴雪精英赛上公布 《Programming .Net Components》学习笔记(八)
LINQ的数据库支持
徐鸿翼 · 2007-05-28 · via 博客园 - 徐鸿翼

一直以为LINQ只应用于查询内存的数据结构,今天看了ScottGuBlogUsing LINQ to SQL (Part 1) ,原来LINQ如此的酷,要加强学习了。简单翻译描述一下,与大家分享。

用于SQLLINQ是内置于.NET FrameworkOrcas”版本中的一种O/RM(对象关系映射)实现,允许使用.NET类对一个关系型数据库进行建模。然后就可以使用LINQ对数据库进行查询了,而且还支持update/insert/delete操作!

用于SQLLINQ完全支持数据库中的事务,视图和存储过程。还提供了一种简单的方式来整合数据验证和业务逻辑规则到你的数据模型中去。

第一步,使用LINQ对数据库建模

Visual StudioOrcas”内置了用于SQLLINQ设计器,提供了快速建模功能和LINQ对象模型的可视化操作(作者将在下篇文章中详细讲解)。以SQL Server里著名的“北风”数据库为例:


其中定义了四个类:
ProductCategoryOrderOrderDetail。类中的每个属性映射了数据库表中的相应的字段。每个类的实例则代表了数据库表中的一条记录。箭头代表了不同实体间的关系,映射了数据库中的主键/外键。箭头方向则代表了关系是一对一还是一对多,基于这个,强类型属性就会添加到实体类中。例如,Category类与Product类就是一个一对多关系,这就意味着Product中有一个“Category”属性指向一个代表了Product所属类型的Category实例。

设计器右侧窗口中则包含了与现在的数据库模型互动的相关存储过程的列表,可以手动添加。

当在设计器点击“保存”时,Visual Studio会生成代表建模中的实体和关系的.NET类,自动生成文件添加到解决方案中。同时还会生成一个定制的DataContext类,主要用来数据库中查询实体以及更新数据库。DataContext类中会创建代表建模中每个表的属性,和添加的每个存储过程的相应方法。

 


第二步,
LINQ应用

1.        查询

通过Product/Category关系来查询指定CategoryProduct,var关键字表示声明的是匿名类型

2.        更新

先从数据库中取出单个Product,更新价格,保存变化回数据库
 

3.        插入

先新建一个Category,在新建两个属于该CategoryProduct,然后保存回数据库。注意,在这里不需要管手动理主键/外键关系,仅需要添加ProudctCategoryProducts集合,再把Catgory添加到DataContext中的Categories集合即可,DataContext会自动维护主键/外键关系。

4.        删除

从数据库中删除指定Product

5.        调用存储过程

注意,一旦得到Product的集合结果,同样可以执行update/delete操作,并保存回数据库。

6.        分页读取

使用Skip()和Take()方法,从数据库中得到指定行的开始的指定行数的Product集合。有些类似于ObjectDataSource中的分页方法(startRowIndex,maximumRows两个参数),还想到了SQL Server 2005中的ROW_Number()函数:)


 

总结:

还需要自己写数据访问层吗~~~~

翻译不当之处希望大家不吝指正,另外网上有哪些好的.NET 3.x学习资料请大家分享一下,谢谢。