实体框架,查看而不是插入触发器.无法在视图中插入行

use*_*418 3 t-sql sql-server triggers entity-framework view

我无法将实体插入到映射视图中.我得到的错误是:

存储,插入或删除语句会影响意外的行数(0)

我知道如何使用存储过程,但是对于我来说,尝试使用插入行视图事件而不是触发器的解决方案更有趣.当我删除,更新或插入t-sql代码时,我没有收到任何错误,但我无法使用EF插入行.更新和删除EF中的工作,但INSERT不会.

码:

create view TestInsert
as
    select a.table_id, a.name
    from TableA as a

create trigger tr_works_via_tsql_but_not_ef_for_some_reason
on TestInsert
instead of isert
begin
   insert into TableA (table_id, name)
   select table_id, name from inserted;
end


[Table(TestInsert)]
public class TestInsert
{
   [Key]
   public int table_id { get; set; }
   public string name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

谁能帮我?

use*_*418 11

万岁,我找到了解决方案!而不是触发器的主体必须返回表的id.

create trigger tr_works_via_tsql_but_not_ef_for_some_reason
on TestInsert
instead of isert
begin
   insert into TableA (table_id, name)
   select table_id, name from inserted;

   **select id from TableA where @@ROWCOUNT > 0 and id = scope_identity()**
end
Run Code Online (Sandbox Code Playgroud)

我使用直接映射,我的项目中没有edmx文件.这是答案的来源: 具有替代触发器的实体框架