Entity framework 使视图中的insert与EF6和SQLite一起工作
我基于sqlite视图创建了一个实体,并希望使用EF6在其中插入数据。我修改了.edmx文件,使EF将视图视为一个表,并在视图上定义了一个主键。 问题是,当我的程序尝试将数据插入视图时(当然,它有一个INSTEAD of insert触发器,用于在视图的两个基础表上插入数据),我会遇到异常: 受意外事件影响的存储更新、插入或删除语句 行数(0)。实体可能已被修改或删除,因为 实体已加载。处理乐观并发异常 从EF调用的基础查询是:Entity framework 使视图中的insert与EF6和SQLite一起工作,entity-framework,sqlite,Entity Framework,Sqlite,我基于sqlite视图创建了一个实体,并希望使用EF6在其中插入数据。我修改了.edmx文件,使EF将视图视为一个表,并在视图上定义了一个主键。 问题是,当我的程序尝试将数据插入视图时(当然,它有一个INSTEAD of insert触发器,用于在视图的两个基础表上插入数据),我会遇到异常: 受意外事件影响的存储更新、插入或删除语句 行数(0)。实体可能已被修改或删除,因为 实体已加载。处理乐观并发异常 从EF调用的基础查询是: Opened connection at 12/07/2019 1
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看到插入发生了?