- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
在我的代码中,我曾经使用 await FindAsync
加载相关实体,希望我能更好地符合 c# async 准则。
var activeTemplate = await exec.DbContext
.FormTemplates.FindAsync(exec.Form.ActiveTemplateId);
它运行缓慢,在 sql server profiler 中很慢,在 SSMS 中查询文本很快。获取这一行用了 5 秒。
备选方案:
var activeTemplate = exec.Form.ActiveTemplate;
要快得多。无论如何,问题似乎不是参数嗅探,因为快速查询和慢速查询中的读取次数是相同的。
一个可能不相关的点是,获取的对象包含一个包含 ~1MB 文本的字符串属性。应用程序是asp.net mvc,与sql server运行在同一台计算机上,使用(本地)连接。
观察到的缓慢的原因是什么?
编辑:在@jbl 的评论之后,我做了更多的实验:
var activeTemplate = await exec.DbContext.FormTemplates
.FirstOrDefaultAsync(x => x.Id == exec.Form.ActiveTemplateId); // slow
var activeTemplate = exec.DbContext.FormTemplates
.FirstOrDefault(x => x.Id == exec.Form.ActiveTemplateId); // fast
最佳答案
从服务器(例如 varbinary(MAX)、varchar(MAX)、nvarchar(MAX) 或 XML)读取大型列时,异步方法可能会出现性能问题。
您可以找到 rducom 的答案,它解释了异步方法的问题 here
关于c# - FindAsync 很慢,但是延迟加载很快,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35292288/
public class Foo { public int Id { get; set; } public int UserId { get; set; } } 这似乎是异步执行此
我通过以下代码模拟了 FindAsync: var brands = new Mock>(); ConfigureTheDbSet(brands, brandData); brands.Setup(b
UserManager.FindAsync 总能找到匹配项,即使我输入了错误的用户名和密码,它也总是会返回某种用户 ID。 [HttpPost] public ActionResult Mobilel
在我的代码中,我曾经使用 await FindAsync 加载相关实体,希望我能更好地符合 c# async 准则。 var activeTemplate = await exec.DbContext
新的 ASP.NET MVC 5 项目模板生成一个准备好的 AccountController,其中包括 UserManager 的基本实现和底层存储(IUserStore >、IRoleStore
我正在编写一个测试来检查应用程序日志,每分钟可能有数千条日志。我想使用 FindAsync 获取最新的日志。但有时服务会中断,因此使用时间值并不准确: // may return many or no
我有多对多关系,我正在使用 ASP.Net Core2.2 MVC 和 EF。 根据我的阅读,我了解到目前我必须为连接表创建一个 CLR 类。 我的代码: 模型: public class Post
还有其他类似的问题,但据我所知与实际的 FindAsync 无关。 我的 ClientsController 调用 ClientService.GetClients,它使用 mongo 驱动程序查询
我正在编写一个非常非常简单的查询,它只是根据其唯一 ID 从集合中获取文档。经过一些挫折(我是 mongo 和 async/await 编程模型的新手),我想通了: IMongoCollection
我正在编写一个非常非常简单的查询,它只是根据其唯一 ID 从集合中获取文档。经过一番挫折(我是 mongo 和 async/await 编程模型的新手),我想通了: IMongoCollection
我正在使用 FluentValidation 来验证对象。我只是检查用户是否存在于数据库中。就我而言,DbContext.Entity.Find 工作得很好,但 DbContext.Entity.Fi
我使用以下代码按字段名称过滤集合。但是 result.Current 总是 null 而数据存在于 MongoCollection 中。有什么想法吗? 代码 public async Task Fin
我是 ASP.NET Identity 的新手。为了更好地理解事情,我正在做 ASP.NET Identity 的自定义实现。我能够使用自定义代码成功创建用户。然而 FindAsync(usernam
我们有 3 种不同的方法从 EFCore 获取单个项目,它们是 FirstOrDefaultAsync()、SingleOrDefaultAsync()(包括没有返回默认值的版本,我们也有FindAs
我目前得到的代码工作正常 public async Task Details(Guid? id) { if (id == null) { return new Http
FindAsync() 是否有原因? IDbSet 中省略了方法界面? Find是界面的一部分,异步版本不可用似乎很奇怪。我需要转换到 DbSet访问它,这有点麻烦: User user = awai
我是 MVC 和 EF 的新手,我正在开发一个使用身份进行用户和角色管理的项目。在 Visual Studio 的预定义登录函数中,有一个名为 FindAsync 的函数,用于通过用户名和密码获取用户
我有一个来自 Parse.com 的在线数据库。有一个表“Vakantie”,包含 3 个对象,所以表数据不大。 我正在尝试从该表中获取所有对象,以便我可以通过 View 中的 VakantieCon
我的应用程序遇到了一个非常奇怪的问题... 我不知道为什么在我点击 FindAsync 函数时会收到此错误消息: CREATE DATABASE permission denied in databa
我已经实现了自定义 UserStore , 它实现了 IUserStore和 IUserPasswordStore . 我的登录操作方法如下: if (ModelState.IsValid) {
我是一名优秀的程序员,十分优秀!