我有一个asp.net-mvc网站,正在使用nhibernate作为我的ORM。
我有一个当前的控制器操作,执行基本的CRUD更新(从数据库查询项目,然后更新一堆值并提交回db表)。 然后它返回一个简单的json响应给客户端,表示成功或错误。
public ActionResult UpdateEntity(MyEntity newEntity)
{
var existingEntity = GetFromRepository(newEntity.Id);
UpdateExistingEntity(newEntity, existingEntity);
return Json(SuccessMessage);
}
在某些情况下(假设提交成功并且更改了我的对象的某些字段),我现在想触发一些额外的操作(如给一些人发送电子邮件和运行生成报告的代码),但是我不想影响正在进行更新的用户体验。因此,我的担忧是如果我这样做: public ActionResult UpdateEntity(MyEntity newEntity)
{
var existingEntity = GetFromRepository(newEntity.Id);
bool keyFieldsHaveChanged = UpdateExistingEntity(newEntity, existingEntity);
if (keyFieldsHaveChanged)
{
GenerateEmails();
GenerateReports();
}
return Json(SuccessMessage);
}
有人想更新内容,但担心执行一个耗时操作会导致用户体验过慢。有没有什么方法(asyngc?)可以在控制器动作中触发一个昂贵的操作,但不会因此使控制器动作变慢?