7

我将 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 并且元素中不存在支持当前操作的元素。

该视图在映射中标记了一个标识列。

有什么建议么?

4

1 回答 1

3

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

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

您需要更改此 xml 部分才能进行 CRUD 操作;

<EntitySet Name=".."  
           EntityType=".."  
           store:Type="Tables" 
           Schema=".." />
于 2012-08-31T14:24:41.003 回答