首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >实体框架6异步/等待并行请求失败

实体框架6异步/等待并行请求失败
EN

Stack Overflow用户
提问于 2016-06-19 21:47:24
回答 1查看 493关注 0票数 0

我在ASP.NET 4.6中使用EF 6开发了一个新的Web 2项目,我阅读了许多描述异步/等待模式的文章,很明显,对于很多请求,这种模式提高性能有很多原因。所以我决定第一次使用它。在这里决定创建一个Biz项目和一个DAL项目,举一个例子。

这是控制器方法:

代码语言:javascript
复制
[HttpGet]
public async Task<bool> CheckValueValidity(string value, string type)
{
   return await _accountsBiz.CheckValueTypeValidity(value, type);
}

我在控制器构造函数中执行biz对象。

这就是你的专长:

代码语言:javascript
复制
public async Task<bool> CheckValueTypeValidity(string value, string type)
    {
        bool isValid = false;
        switch (type.ToLower())
        {
            case "email":
                isValid = await _accountsRepository.CheckEmailValidity(value);
                break;
            case "username":
                isValid = await _accountsRepository.CheckUserNameValidity(value);
                break;
        }
        return isValid;
    }

我在BIZ构造函数中实例存储库。

最后,这是DAL方法:

代码语言:javascript
复制
public async Task<bool> CheckEmailValidity(string email)
    {
        using(MyEntities db = new MyEntities())
        {
            return await db.AspNetUsers.CountAsync(u => u.Email == email) > 0 ? false : true;
        }
    }

直到我同时提出两个请求,它们中的一个返回了正确的值,另一个表示

在以前的异步操作完成之前,在此上下文上启动了第二个操作。在此上下文中调用另一个方法之前,请使用“等待”确保任何异步操作都已完成。不保证任何实例成员都是线程安全的。

我从两个不同的客户端发出请求,所以上下文应该是不同的。应该..。

我不知道怎么修好它。我读了很多书,我的代码似乎是正确的。

问题是为什么要抛出这个错误?我不明白

谢谢你的建议。

EN

回答 1

Stack Overflow用户

发布于 2016-06-19 22:53:09

确定在执行流中发现了错误,有一种方法使用DbContext而不使用using块.我的错误,但现在很清楚,上下文必须处理每一个请求!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37912174

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档