【发布时间】:2019-05-29 21:09:15
【问题描述】:
我在尝试将 DBML 的“自动同步”功能与 SQLite 结合使用时遇到问题。我的数据模型中有一个包含主键 (id) 的类。该键定义为“INTEGER PRIMARY KEY”,SQLite 映射到行的rowid。为了支持这一点,我将“自动生成的值”设置为“True”,将“自动同步”设置为“OnInsert”。
问题是,当我向数据库提交新条目时,SQLite 不支持 LINQ to SQL 类使用的 SELECT 字符串:
SELECT CONVERT(BigInt,SCOPE_IDENTITY()) AS [value]
相反,SQLite 有 last_insert_rowid() 函数,我似乎无法指出。
有谁知道如何解决这个问题?可能是通过更改用于选择最后一行 ID 的语句或我缺少的其他技巧?
编辑提供商的网站上似乎有sometraffic,但没有解决方案。
编辑 因为我似乎对这个问题感到困惑,所以我是这样设置我的应用程序的。希望它有助于阐明我的思考过程,也许是一个潜在的问题。
- 将新的“LINQ to SQL 类”文件添加到我的解决方案中
- 在设计器中为我的数据库建模,命名为
DataModel - 使用
System.Data.SQLite.SQLiteConnection打开数据库 - 使用此连接初始化
DataModel实例
【问题讨论】:
-
hmm.. DBML = Linq-to-SQL = 仅限 SQL Server。不确定您要在这里做什么 - 但 DBML 文件不是 Linq-to-SQL 的一部分,它仅针对 SQL Server 作为后端?
-
我应该提到...我使用 System.Data.SQLite (sqlite.phxsoftware.com) 作为后端,它支持 ADO.NET 实体框架。
-
您能否澄清一下您是根据您的问题和标签使用 LINQ to SQL / DBML(不支持 SQLite),还是使用实体框架 / EDMX(通过您提到的图书馆)根据您的评论?
-
@itowlson:好吧,我想我不太确定。我更新了我的问题以显示我是如何建立连接并使用 DBML 的。希望这会有所帮助。
标签: c# linq-to-sql sqlite