gpt4 book ai didi

c# - 每次编译后第一次加载 Entity Framework 非常慢

转载 作者:IT王子 更新时间:2023-10-29 03:55:40 27 4
gpt4 key购买 nike

正如标题所暗示的那样,我在使用 Entity Framework 对 SQL Server 数据库进行第一次查询时遇到了问题。我曾尝试寻找答案,但似乎没有人真正找到解决方案。

测试是在 Visual Studio 2012 中使用 Entity Framework 6 完成的,我还使用了 T4 View 模板来预编译 View 。数据库在 SQL Server 2008 上。我们有大约 400 个 POCO(400 个映射文件),数据库表中只有 100 行数据。

下面是我的测试代码和结果。

static void Main(string[] args){
Stopwatch st=new Stopwatch();
st.Start();
new TestDbContext().Set<Table1>.FirstOrDefault();
st.stop();
Console.WriteLine("First Time "+st.ElapsedMilliseconds+ " milliseconds");

st.Reset();
st.Start();
new TestDbContext().Set<Table1>.FirstOrDefault();
st.stop();
Console.WriteLine("Second Time "+st.ElapsedMilliseconds+ " milliseconds");
}

测试结果

First Time 15480 milliseconds
Second Time 10 milliseconds

最佳答案

在第一次查询时,EF 编译模型。对于这么大的模型,这可能需要花费一些时间。

这里有 3 个建议:http://www.fusonic.net/en/blog/2014/07/09/three-steps-for-fast-entityframework-6.1-first-query-performance/

总结:

  1. 使用缓存数据库模型存储
  2. 生成预编译 View
  3. 使用 n-gen 生成 entityframework 的预编译版本以避免 jitting

我还会确保在执行基准测试时以 Release模式编译应用程序。

另一种解决方案是查看拆分 DBContext。 400 个实体很多,使用较小的 block 应该会更好。我还没有尝试过,但我认为可以一个接一个地构建模型,这意味着没有一个负载需要 15 秒。请参阅 Julie Lerman 的这篇文章 https://msdn.microsoft.com/en-us/magazine/jj883952.aspx

关于c# - 每次编译后第一次加载 Entity Framework 非常慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30423838/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com