【发布时间】:2010-10-30 12:35:08
【问题描述】:
我在使用 SQLite 时遇到了实体框架中的主键问题。 SQLite 希望在自动递增主键列的 VALUES 列表中显式 NULL。我实际上并没有查看 EF 上下文中生成的 SQL,但我相信它符合通常的 SQL Server 约定,即不为自动递增列提供任何值。
根据 ADO.NET SQLite 提供程序的 site,完全支持 EF,但我在那里找不到任何帮助。有没有办法强制 EF 为主键值显式插入 NULL?
【问题讨论】:
-
我也有同样的情况。我已经尝试更换很长时间了?在生成的代码中,所以我至少可以自己设置 null,但它不起作用。错误消息是:“对数据库的更改已成功提交,但在更新对象上下文时发生错误。ObjectContext 可能处于不一致状态。内部异常消息:定义 EntityKey 的键值对不能为空或为空。\r\n参数名称:记录"。似乎没有办法绕过这一点,处理自动增量的 sqlite 方式有点奇怪。
-
我放弃了 SQLite 与 EF 的结合。在 System.Data.Sqlite 网站的论坛上有一篇关于这个问题的帖子,但一段时间没有任何动作或回应。我转向 SQL Compact,它提出了自己的问题。您不能使用 EF/SQLCompact 执行“服务器生成的密钥”。所以,现在我为插入做标准的连接/命令式 ADO,我使用 EF 作为 LINQ 糖。
-
这太糟糕了。我想同样的“技巧”可以在 sqlite 中使用。我已经用 CE 和 linq to sql 测试了自动增量,它似乎可以工作。没有用sqlite尝试过,不确定是否可行。
-
以下是 EF/CE 的限制列表:technet.microsoft.com/en-us/library/cc835494.aspx
-
是的,经过考虑,我本可以使用相同的技术继续使用 SQLite...哦,好吧。
标签: entity-framework system.data.sqlite