首页 新闻 搜索 专区 学院

有大佬知道 .net 异步的问题吗

-2
悬赏园豆:10 [待解决问题]

我使用vs 2013时,.net mvc ef 使用异步操作数据库,为何第一个异步操作生效,第二个异步操作无法生效

代码如下:
public async Task RemoveArticle(Guid articleId)
{
using (IDAL.IArticleToBlogFlag ToflagSev = new DAL.ArticleToBlogFlag())
{
var data = ToflagSev.getAllData().Where(m => m.articleId == articleId).ToList();
foreach (var item in data)
{
await ToflagSev.removeAsync(item.ID, false);
}
await ToflagSev.Saved();
using (IDAL.IArticleService articleSev = new DAL.ArticleService())
{
await articleSev.removeAsync(articleId);
}
}

    }

为何只有第一个await 后面的生效,第二个即使调试也跳过。

问题补充:

public async Task Saved()
{
await _db.SaveChangesAsync();
_db.Configuration.ValidateOnSaveEnabled = true;
}

保存方法在这里

耗油炒生菜的主页 耗油炒生菜 | 初学一级 | 园豆:192
提问于:2019-12-25 09:51
< >
分享
所有回答(5)
0

执行完成了呗

通信的搞程序 | 园豆:1729 (小虾三级) | 2019-12-25 10:09

可是数据库并没有发生变化,修改,添加也是如此。

支持(0) 反对(0) 耗油炒生菜 | 园豆:192 (初学一级) | 2019-12-25 10:26
0

await articleSev.Saved(); 不应该加个这个吗

czd890 | 园豆:11893 (专家六级) | 2019-12-25 10:17

有的,我直接封装在removeAsync(T model,saved = true) 方法里面的。

支持(0) 反对(0) 耗油炒生菜 | 园豆:192 (初学一级) | 2019-12-25 10:25
0

也许是抛出了未捕获的异常

会长 | 园豆:10269 (专家六级) | 2019-12-25 10:26

我也尝试过捕获,我捕获不到,然后我把第一个异步方法变成同步方法,就可以完美执行。
我想不明白到底哪里错了。

支持(0) 反对(0) 耗油炒生菜 | 园豆:192 (初学一级) | 2019-12-25 10:29

@seed阿斯顿: 未可知也

支持(0) 反对(0) 会长 | 园豆:10269 (专家六级) | 2019-12-25 10:38

@会长: 纠结。。。。

支持(0) 反对(0) 耗油炒生菜 | 园豆:192 (初学一级) | 2019-12-25 10:42
0

不懂诶,
这个 await ToflagSev.Saved(); 为啥不是SavedAsync呢

猝不及防 | 园豆:2495 (老鸟四级) | 2019-12-25 13:42

这个是我写的一个方法,里面是SavedAsync。

支持(0) 反对(0) 耗油炒生菜 | 园豆:192 (初学一级) | 2019-12-25 15:16
0

只有你自己知道函数里面怎么实现的...反正按正常逻辑,你第二删除没Save。

把简单的事情复杂化,真真的佩服这种程序员。说个故事,以前我去用一个官方的简单的ORM,然后那个那个老程序员就觉得自己以前写的ORM牛X,但特么的连Connection用法都没搞清楚,把团队带坑是经常的事。我是不管的,悄悄的用专业的代码就好。

且不论具体里面的实现代码了,你们这么写await累不累~~明明一排串行,非要活生生搞成并行,然后再串行...少一个单词也是体力啊。

花飘水流兮 | 园豆:12979 (专家六级) | 2019-12-27 02:43

我已经在方法里面使用了save方法。我是弄了好久才提的这个问题,如果是小失误什么的我早就查到了.用async是因为别人说会极大的提升网站的速度,想用一下。

支持(0) 反对(0) 耗油炒生菜 | 园豆:192 (初学一级) | 2019-12-27 20:07
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册