sqlite-net 更新方法是如何工作的?

Posted

技术标签:

【中文标题】sqlite-net 更新方法是如何工作的?【英文标题】:How does sqlite-net update method work? 【发布时间】:2015-07-25 09:07:27 【问题描述】:

https://www.nuget.org/packages/sqlite-net

该库中的 Update 方法如何将数据写入数据库?它会重写所有列还是仅更新列?

【问题讨论】:

【参考方案1】:

来自SQLite for Windows Phone 8.1 上的Update 方法的文档,该方法与Windows 运行时相同:

使用指定对象更新表的所有列,但主键除外。

并且执行的查询是从这行 LINQ 代码构建的:

var q = string.Format ("update \"0\" set 1 where 2 = ? ", map.TableName, string.Join (",", (from c in cols
            select "\"" + c.Name + "\" = ? ").ToArray ()), pk.Name);

然后无论值是否不同,SQL 都会更新列。

如果您只想更新更改的列,您可以遍历所有列,比较传入到相应列的值,如果它们不同,则通过创建自己的查询语句运行一些更新代码。

【讨论】:

以上是关于sqlite-net 更新方法是如何工作的?的主要内容,如果未能解决你的问题,请参考以下文章

SQLite-Net 扩展 - GetAllWithChildrenAsync 没有拉动一切

C#使用sqlite-net搭建简易的ORM

调试符号时读取 SQLite-net.dll 失败

使用 SQLite 的 sqlite-net-pcl 库更新单行表中单个列的值的简单方法是啥?

使用带有 sqlite-net orm 的 SQLiteConnection.Delete(object) 命令后更改 sqlite 文件大小

如何在 Oracle SQL 中更新作业中的参数