Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/271.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

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# 测试的结果是无用的。您应该测试很多操作(都是CRUD)并使用真正的ORM,而不是整洁的ORM。Linq2db有一些连EF都做不到的简洁的高级功能,并且可以与Linq一起使用,因此运行基准测试将是一个更好的选择。那篇文章做了很多不好的假设,远远不是一个现实的_C#_Entity Framework_Dapper - Fatal编程技术网

C# 测试的结果是无用的。您应该测试很多操作(都是CRUD)并使用真正的ORM,而不是整洁的ORM。Linq2db有一些连EF都做不到的简洁的高级功能,并且可以与Linq一起使用,因此运行基准测试将是一个更好的选择。那篇文章做了很多不好的假设,远远不是一个现实的

C# 测试的结果是无用的。您应该测试很多操作(都是CRUD)并使用真正的ORM,而不是整洁的ORM。Linq2db有一些连EF都做不到的简洁的高级功能,并且可以与Linq一起使用,因此运行基准测试将是一个更好的选择。那篇文章做了很多不好的假设,远远不是一个现实的,c#,entity-framework,dapper,C#,Entity Framework,Dapper,测试的结果是无用的。您应该测试很多操作(都是CRUD)并使用真正的ORM,而不是整洁的ORM。Linq2db有一些连EF都做不到的简洁的高级功能,并且可以与Linq一起使用,因此运行基准测试将是一个更好的选择。那篇文章做了很多不好的假设,远远不是一个现实的测试用例。查看更多信息。@Alternatex,谢谢链接。但结论是一样的:Dapper的性能只是稍微好一点,但EF有更多的功能。在编写复杂查询时,有时EF无法生成最佳SQL,您必须手动执行。所以我不会说EF真的是“完整的”,它只是对非常简单的查


测试的结果是无用的。您应该测试很多操作(都是CRUD)并使用真正的ORM,而不是整洁的ORM。Linq2db有一些连EF都做不到的简洁的高级功能,并且可以与Linq一起使用,因此运行基准测试将是一个更好的选择。那篇文章做了很多不好的假设,远远不是一个现实的测试用例。查看更多信息。@Alternatex,谢谢链接。但结论是一样的:Dapper的性能只是稍微好一点,但EF有更多的功能。在编写复杂查询时,有时EF无法生成最佳SQL,您必须手动执行。所以我不会说EF真的是“完整的”,它只是对非常简单的查询很有帮助,但是你必须完全了解它才能有效地使用它,你也必须完全了解SQL,因此,当你刚开始阅读一本关于EF的书时,你必须了解2个大主题,而不是1个,因为这本书看起来非常简单和有前途。但是日复一日,您一次又一次地面临新的挑战,其中一些挑战是通过复杂的LINQ解决的,而另一些则是通过纯SQL解决的。你花了很多时间来学习EF能做什么,不能做什么。项目的工作量越大,LINQ查询的效率就越低,您也必须用纯SQL重写它们。然后,您意识到必须关闭其默认的自动跟踪器,并使用一些第三方库,如EntityFramework Plus,使其工作更快。最后你觉得怎么了?为什么我选择了这个完整的ORM,花了很多时间来学习它,而现在我只在简单的查询中使用它?!然后你会发现整洁。@Sergey:同意;但也没有什么其他方面需要考虑。请阅读博客。@Sergey:
“然后你会发现整洁。”
不错的选择。依我看,在一些场景中,完整的ORM、微ORM和手写查询发挥了它们的作用,并且具有它们的重要性。这是一个关于使用什么以及我们应该从中得到什么的设计决策。我已经阅读了这篇文章。我并没有轻蔑地谈论奥姆。相反,我认为人们做了很大的努力使它以最好的方式工作,而且目前它确实工作得很好。我真正的意思是,您必须同时学习SQL和ORM。Martin F.也说了同样的话,甚至更多——你必须先学习SQL。我想说的是,在每一本书和每一篇文章中,对于刚开始通过EF使用DB的初学者来说,这一点都应该得到大字警告。但事实并非如此,因此,新手会像我一样陷入误解和错误预期。最后一句话对EF core的当前版本2.1.1不适用。另外,FWIW,我也不同意第二段的开头。在LINQ中编写复杂查询比在SQL中容易得多,尤其是在使用导航属性时。最后,这并不能真正回答为什么在这种特定情况下EF更快的问题。@GertArnold我找不到没有DbSet映射原始SQL查询的方法。我知道怎么做,我能问你在哪里找到怎么做吗?至于什么更容易使用,那是口味的问题。根据我的经验,原始SQL更灵活。对我来说,不完全是来自SQ的
,但是:EF Linq到Dapper是最准确的比较。您知道有多少开发人员在使用EF时会手工处理他们的查询?Ef Linq to Dapper是基于使用情况的苹果对苹果比较。
System.Diagnostics.Stopwatch sw = new System.Diagnostics.Stopwatch();
sw.Start();
IEnumerable<Emp> emplist = cn.Query<Emp>(@"Select * From Employees");
sw.Stop();
MessageBox.Show(sw.ElapsedMilliseconds.ToString());
System.Diagnostics.Stopwatch sw = new System.Diagnostics.Stopwatch();
sw.Start();
IEnumerable<Employee> emplist = hrctx.Employees.ToList();
sw.Stop();
MessageBox.Show(sw.ElapsedMilliseconds.ToString());
hrctx.Configuration.LazyLoadingEnabled = false;
IEnumerable<Employee> emplist = hrctx.Employees.AsNoTracking().ToList();
IEnumerable<Employee> emplist = hrctx.Employees.ToList();
IEnumerable<Employee> emplist = hrctx.Employees.FromSql(@"Select * From Employees").AsNoTracking();