问题描述
我正在尝试创建为用户返回所有对话消息的函数,在正常测试中,它运行正常,没有任何问题,但是当我测试另一个函数时, createMessage 却带有大量的http请求同时请求大约15000 我注意到另一个函数 fillMessageHistory 需要很长时间才能返回消息(我认为这是等待创建消息完成然后返回对话),所以我该怎么办即使另一个用户保留了创建消息,仍然使填充消息函数返回数据,这与函数之间没有关系也很奇怪。 我该如何解决这个问题:
public async Task<List<MessageDto>> getMessageHistory(long userId,string placeCode,long ReciverPlceId,long userRoleFlag)
{
await UpdateMessageStatus(userId,placeCode,ReciverPlceId,userRoleFlag);
return await _repository.GetAllIncluding(x => x.listOReciverPlceMessages).Where(x => (x.receiverID == userId|| x.CreatorUserId == userId) && x.placeCode== placeCode&& x.listOReciverPlceMessages.Any(x => x.ReciverPlceId== ReciverPlceId)).OrderBy(message => message.CreationTime)
.Select(x => new MessageDto
{
Id = x.Id,ReciverPlceId = x.listOReciverPlceMessages.Where(x => x.ReciverPlceId== ReciverPlceId).Select(x => x.ReciverPlceId).FirstOrDefault(),CreatorUserId = x.CreatorUserId,placeCode= x.placeCode,receiverID = x.receiverID,receiverUserName = x.receiverUserName,Text = x.Text,UserName = x.UserName,CreationTime = x.CreationTime
}).ToListAsync();
}
创建消息功能:
public async Task<Message> CreateMessage(CreateMessageDto input)
{
var ReciverPlceMessages= ObjectMapper.Map<ReciverPlceMessages>(input.ReciverPlceMessages);
ReciverPlceMessages.message = ObjectMapper.Map<Message>(input);
var result=await _repository.GetDbContext().Set<ReciverPlceMessages>().AddAsync(ReciverPlceMessages);
await _repository.GetDbContext().SaveChangesAsync();
if (input.receiverID == 0)
{
await sendMessageNotificationForTheUserAsync(input.receiverID);
}
return ObjectMapper.Map < Message > (input);
}
问题摘要是:
由于我的创建功能正在运行,因此我的读取功能未返回数据或花费了很长时间读取数据。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)