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

推荐订阅源

Microsoft Azure Blog
Microsoft Azure Blog
Google Online Security Blog
Google Online Security Blog
D
Darknet – Hacking Tools, Hacker News & Cyber Security
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Simon Willison's Weblog
Simon Willison's Weblog
T
Threat Research - Cisco Blogs
C
CXSECURITY Database RSS Feed - CXSecurity.com
L
Lohrmann on Cybersecurity
www.infosecurity-magazine.com
www.infosecurity-magazine.com
Forbes - Security
Forbes - Security
P
Palo Alto Networks Blog
Schneier on Security
Schneier on Security
S
Schneier on Security
T
Tor Project blog
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
WordPress大学
WordPress大学
The Hacker News
The Hacker News
Hacker News - Newest:
Hacker News - Newest: "LLM"
罗磊的独立博客
Application and Cybersecurity Blog
Application and Cybersecurity Blog
F
Fortinet All Blogs
博客园 - 三生石上(FineUI控件)
小众软件
小众软件
C
Check Point Blog
Stack Overflow Blog
Stack Overflow Blog
Blog — PlanetScale
Blog — PlanetScale
雷峰网
雷峰网
S
Security @ Cisco Blogs
PCI Perspectives
PCI Perspectives
Spread Privacy
Spread Privacy
W
WeLiveSecurity
SecWiki News
SecWiki News
A
About on SuperTechFans
H
Help Net Security
博客园 - 司徒正美
Recent Commits to openclaw:main
Recent Commits to openclaw:main
爱范儿
爱范儿
S
Securelist
M
MIT News - Artificial intelligence
云风的 BLOG
云风的 BLOG
月光博客
月光博客
Jina AI
Jina AI
博客园 - 叶小钗
Vercel News
Vercel News
阮一峰的网络日志
阮一峰的网络日志
Recent Announcements
Recent Announcements
S
Secure Thoughts
The Cloudflare Blog
美团技术团队
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More

博客园 - 阿修

Entity FrameWork 单表对多实体 让Entity Framework启动不再效验__MigrationHistory表 Entity Framework搜索指定字段解决方案 Linux+Mono+WebService:CS1703: An assembly with the same identity--mscorlib 获取某年中第几个礼拜的第一天的函数 [转摘]Lucene学习总结之一:全文检索的基本原理 Lucene.net根据Sort走到了不同的类处理 VPN Connections and Default Gateways - 阿修 牛!帮EXE等执行文件压缩的工具 进程通讯的多种方式 三星I9008删除程序清单 .NET编程中的部分效率问题 质量保证漫漫谈之QA、QC、QM的关系与区别 敏捷宣言 多维角度聊聊结对编程 在Windows下编译和.NET运行MemCached Serv-U服务器中文乱码问题的解决 请小心 管理学中四件不要做的事情
DataTable.Rows.Remove(row) 与 DataTable.Rows[i].Delete()区别
阿修 · 2012-01-21 · via 博客园 - 阿修

今天在做ADO.NET中的adapter进行数据自动触发更新数据库功能,发现一个很奇怪的问题,原来数据操作都是自己代码去完成更新,从来没有涉及到这种方式,所以一时晕菜了。

 1 SQLiteDataAdapter dataAdpater = new SQLiteDataAdapter("Select cid,sd from VC", conn);
2 dataAdpater.DeleteCommand = new SQLiteCommand("delete From VC Where cid = @cid", conn);
3 dataAdpater.DeleteCommand.Parameters.Add("@cid", DbType.Int32, 4, "cid");
4 dataAdpater.DeleteCommand.Parameters["@cid"].SourceVersion = DataRowVersion.Original;
5
6 DataTable categoryTable = new DataTable();
7 dataAdpater.Fill(categoryTable);
8 categoryTable.PrimaryKey = new DataColumn[]{categoryTable.Columns["cid"]};
9
10 DataRow dr = categoryTable.Rows.Find(213213);
11 categoryTable.Rows.Remove(dr);
12 dataAdpater.Update(categoryTable);

执行以上代码,发现实体数据库并未删除,很奇怪,到最后一句debug时对应的213213记录已经确实不存在,为什么数据库一直没有删除,很困惑,后来查询MSDN里面发现DataRow有个Delete函数,马上试试,果然成功删除。

1 DataRow dr = categoryTable.Rows.Find(213213);
2 dr.Delete();
3 dataAdpater.Update(categoryTable);

查询MSDN解释如下:

DataTable.Rows.Remove(row) :Calling Remove is the same as calling Delete and then calling AcceptChanges.

DataTable.Rows[i].Delete():A deleted row can be undeleted by invoking RejectChanges.

这样意思就很清楚,DataTable里面所有记录集都有自己的一个修改标志,证明每条记录是add,delete还是modify的,所有adpater.Update时候就会调用不同的cmd就最终同步是数据,早十年前我同事就用XML返回数据集,本地做离线编辑就是用这方式,最后再一次性提交数据库,哈,我那同事确实牛!