与INSTEAD OF触发器实体框架(Entity Framework with Instead O

2019-09-22 01:02发布

我使用EF与SQL Server数据库。 我创建了一个视图和Instead Of Insert触发器,这种观点看起来像这样:

insert into Target (value, someFk) 
select value, 4 from inserted
select id from Target where @@ROWCOUNT > 0 and id = scope_identity() 

我映射视图到EF EDMX。 当我尝试添加一个实体,我得到当我打电话以下异常SaveChanges()

无法更新EntitySet的“的TargetView”,因为它有一个DefiningQuery并没有元素的元素存在,以支持当前的操作。

视图有标记在映射标识列。

有什么建议么?

Answer 1:

如果你打开EDMX文件使用XML编辑器,在中的TargetView定义,你将有类似于以下一些XML的部分;

<EntitySet Name=".."  
           EntityType=".." 
           store:Type="Views" 
           store:Schema=".." 
           store:Name="..">
<DefiningQuery>SELECT ....</DefiningQuery>

您需要更改此XML部分才能有CRUD操作;

<EntitySet Name=".."  
           EntityType=".."  
           store:Type="Tables" 
           Schema=".." />


文章来源: Entity Framework with Instead Of triggers