gpt4 book ai didi

c# - 为什么 Entity Framework 对数据库进行如此多的往返?

转载 作者:可可西里 更新时间:2023-11-01 08:41:48 26 4
gpt4 key购买 nike

我正在重写我的应用程序以使用 Entity Framework 。我感到困惑的是我正在编写的代码看起来像是在对 sql server 进行不必要的访问。比如我有一个类似SO的问答网站。当我添加问题的答案时——这是我使用的代码:

var qu = context.question.where(c => c.questionID == 11).First();  //Database call here
var answer = new answer();
answer.title = "title here";
answer.desc = "desc here";
answer.question = qu;
context.SaveChanges(); //Database call here

在上面的代码中有 2 个数据库调用对吗?如果是这样,为什么我不能直接添加问题的答案?比如

var ans = answer.Createanswer (0, "title here", "desc here", questionID)
context.SaveChanges();

有没有办法尽量减少所有数据库调用?

最佳答案

正如 EF 设计师之一 AlexJ 所解释的那样 http://blogs.msdn.com/alexj/archive/2009/06/19/tip-26-how-to-avoid-database-queries-using-stub-entities.aspx

此外,这一切都属于“优化”领域,这并不像看起来那么简单

使用简单的方法,SQL 将执行一个读取操作来加载 FK(问题)并缓存结果,然后在一个单独的命令上执行一个应该使用缓存的 FK 结果的插入操作

使用附加的 FK 方法仍然会导致服务器对 FK 进行读取操作,这只是意味着少了一次到 SQL Server 的往返。所以问题就变成了 - 随着时间的推移,往返是否比增加的代码复杂性更昂贵?

如果应用程序和 SQL Server 在同一台机器上,这个开销非常小

此外,如果 FK 是大表或宽表上的聚集索引,则 IO 开销可能比仅 FK 值上的单独标准索引要多得多 - 假设查询优化器正常工作:-)

关于c# - 为什么 Entity Framework 对数据库进行如此多的往返?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1512154/

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