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
Entity framework 在实体框架中预生成插入/更新视图_Entity Framework - Fatal编程技术网

Entity framework 在实体框架中预生成插入/更新视图

Entity framework 在实体框架中预生成插入/更新视图,entity-framework,Entity Framework,我们在Entity Framework中遇到了一个问题,第一次对一个非常简单的对象插入执行SaveChanges时,会有2-4秒的延迟。我已经缩小了范围(通过ANTS Performance Profiler)来查看生成。我已经看过并遵循了使用或预生成视图的文章,但这没有帮助:.views.cs文件只包含SELECT语句,而不包含UPDATE或INSERT语句。关于使用预编译查询、缓存查询等的EF和性能已经有很多讨论,但都是围绕选择,而不是隐藏在SaveChanges()后面的插入或更新 我发现

我们在Entity Framework中遇到了一个问题,第一次对一个非常简单的对象插入执行SaveChanges时,会有2-4秒的延迟。我已经缩小了范围(通过ANTS Performance Profiler)来查看生成。我已经看过并遵循了使用或预生成视图的文章,但这没有帮助:.views.cs文件只包含SELECT语句,而不包含UPDATE或INSERT语句。关于使用预编译查询、缓存查询等的EF和性能已经有很多讨论,但都是围绕选择,而不是隐藏在SaveChanges()后面的插入或更新

我发现让EF生成INSERT视图的唯一方法是尝试在服务启动时插入我知道会失败的行,例如将外键设置为不应该存在的ID。这在我看来简直是荒谬可笑。有更好的办法吗?我真的不在乎它是发生在编译时还是服务启动时,但有没有办法强制EF生成所有(基本)更新和插入视图?让服务的第一个用户等待2-4秒以插入一行是不可接受的

我们现在正在使用EF4,但如果有必要解决这个问题,我们将跳转到EF5和.NET4.5

编辑: 进一步的研究表明,虽然在创建/编译更新视图时第一次对表调用SaveChanges()会产生开销,但开销可以忽略不计(30-40ms)。分析它会使它看起来比庞大的调用堆栈更糟糕。我最初的2-4秒计时结果分解为其他开销,如: 创建第一个上下文:1600ms 第一个EF操作(加载或创建查询视图)如果预编译为400ms,否则为3000+ms
与远程数据库的初始连接:500ms进一步挖掘显示,与其他开销相比,生成更新视图的时间可以忽略不计,不需要任何特殊处理。

进一步挖掘显示,与其他开销相比,生成更新视图的时间可以忽略不计,不需要任何特殊处理