entity-framework - 使用 EF6 和 SQLite 在视图中插入
问题描述
我基于 sqlite 视图创建了一个实体,我想使用 EF6 在其中插入数据。我更改了 .edmx 文件以使 EF 将视图视为表并在视图上定义主键。问题是,当我的程序尝试将数据插入视图时(当然有一个 INSTEAD OF INSERT 触发器将数据插入到视图的 2 个基础表中),我得到了异常:
存储更新、插入或删除语句影响了意外数量的行 (0)。自加载实体以来,实体可能已被修改或删除。处理乐观并发异常。
从 EF 调用的基础查询是:
Opened connection at 12/07/2019 16:58:18 +02:00
Started transaction at 12/07/2019 16:58:18 +02:00
INSERT INTO [testcasesView]([name], [deviceversion_id], [user_id], [timestamp], [comment], [static_result], [description], [precondition], [action], [expected_result], [reviewed], [automated])
VALUES (@p0, @p1, @p2, @p3, NULL, @p4, @p5, @p6, @p7, @p8, @p9, @p10);
SELECT [id]
FROM [testcasesView]
WHERE last_rows_affected() > 0 AND [id] = last_insert_rowid()
;
-- @p0: 'asd' (Type = String)
-- @p1: '67' (Type = Int64)
-- @p2: '20' (Type = Int64)
-- @p3: '1562943498' (Type = Int64)
-- @p4: 'as' (Type = String)
-- @p5: 'asd' (Type = String)
-- @p6: 'asd' (Type = String)
-- @p7: 'asd' (Type = String)
-- @p8: 'asd' (Type = String)
-- @p9: '0' (Type = Int64)
-- @p10: '0' (Type = Int64)
-- Executing at 12/07/2019 16:58:18 +02:00
-- Completed in 1 ms with result: SQLiteDataReader
Closed connection at 12/07/2019 16:58:18 +02:00
Disposed transaction at 12/07/2019 16:58:18 +02:00
我明白为什么,但我不知道我是否能解决这个问题。问题是,由于真正的插入发生在触发器内部(我没有发布代码,因为它是两个简单的插入),查询
SELECT [id]
FROM [testcasesView]
WHERE last_rows_affected() > 0 AND [id] = last_insert_rowid()
不返回任何内容,然后 EF 认为没有行受到影响。
是否有可以添加到触发器中的语句或代码使 EF 看到插入发生?
解决方案
推荐阅读
- javascript - 如何为响应式布局同步 CSS 和 JavaScript?(变量和@media)
- .net - App.Config 文件无法按预期与 Selenium c# 一起工作
- xamarin - 在 Xamarin 中引用 Android 库
- php - CakePHP 无法加载 jquery
- acumatica - 将销售人员从一个客户复制到另一个客户
- android - Kotlin - 猫王操作员不当行为
- javascript - 在窗口调整大小时激活功能
- javascript - 如何在 Directus 中创建报告页面
- sql - 尝试在表达式作为结果的情况下使用条件
- python - NN回归损失值不减少