donc j'ai 2 classes ici: et p> J'essaie de créer un message via l'action du contrôleur suivante, Ce qui crée un nouveau message et l'ajoute à la base de données, puis mettez à jour les iCollectionMessages dans la base de données. p> contrôleur ici: p> [Route("sendMessage")]
[HttpPost]
public async Task SendMessage([FromBody] Message message)
{
var newMessage = new Message
{
MessageContent = message.MessageContent,
DateCreated = DateTime.Now,
SenderId = message.SenderId,
ReceiverId = message.ReceiverId
};
_dbContext.Messages.Add(newMessage);
var user = _dbContext.Users.SingleOrDefault(x => x.UserId == message.SenderId);
if(user != null)
{
var userMessages = user.Messages.ToList();
userMessages.Add(newMessage);
}
await _dbContext.SaveChangesAsync();
}
4 Réponses :
Essayez de faire comme ça
Je n'ai pas l'erreur et les messages du message, mais cela ne met pas à jour l'ID utilisateur dans la base de données. Userid est toujours nul
Modification:
... var user = _dbContext.Users.Include(u=>u.Messages).SingleOrDefault(x => x.UserId == message.SenderId); if(user != null) { var userMessages = user.Messages; userMessages.Add(newMessage); } await _dbContext.SaveChangesAsync();
Hé, merci pour l'entrée mais cela ne semble pas fonctionner. Userid ne met pas à jour. S'il vous plaît voir mon édition pour plus de détails sur ce que j'essaie d'atteindre
UserID code> dépend de la manière dont vous avez configuré l'identité sur votre modèleBuilder / dBContext. Mettez à jour votre question avec votre dbcontext.
Je pense que vous ajoutez un message à une copie de la collection de messages (à cause de TOLIST), essayez donc de faire utilisateur.Messages.add (NewMessage) P>
user.messages.add (NewMessage) P>
corrigé par E. SHCHERBO P>
merci! p>
Vous ajoutez un nouveau message à une copie de la collection de messages La déclaration ci-dessus crée une nouvelle liste pour les données, donc je l'appellerais comme p> user.Messages.Add(newMessage);
Vous devez charger explicitement des messages pour l'utilisateur
_dbcontext.user.include (u => u.messages) .Singleordfault (x => x.userid == message.senderid); code>
Je pense que vous ajoutez un message à une copie de la collection code> Messages code> (en raison de
tolist code>), alors essayez de faire
user.messages.add (newMessage) < / code>
Incroyable! Merci beaucoup ça a fonctionné magnifiquement!