Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 具有Instead Of触发器的实体框架_C#_Entity Framework_Triggers - Fatal编程技术网

C# 具有Instead Of触发器的实体框架

C# 具有Instead Of触发器的实体框架,c#,entity-framework,triggers,C#,Entity Framework,Triggers,我正在将EF与SQL Server数据库一起使用。我为该视图创建了一个视图和一个而不是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(),会出现以下异常: 无

我正在将EF与SQL Server数据库一起使用。我为该视图创建了一个视图和一个
而不是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,并且该查询中不存在任何元素 元素来支持当前的 手术

视图在映射中有一个标识列


有什么建议吗?

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

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

选择。。。。
为了进行CRUD操作,您需要更改这个xml部分

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


+1另请参见@nonnb这篇介绍替代方法的伟大文章;谢谢分享。这很有效,但这是非常错误的。希望EF5.0能在这里增加一些改进。@Jaster我同意你的观点;与nhibernate等其他ORM工具相比,EF是一个令人头痛的问题。nhibernate并没有任何改进。在这个问题上,它似乎做得更好。与EF相比,它还有其他限制(自动生成/映射、性能等)。老实说,当涉及到严重的数据库操作时,我不喜欢任何一个或映射器。