public async Task <IHttpActionResult> NewQuestion([FromBody] Question q) { var user = await _repository.GetUserByEmailAsync(q.UserName); /* * Se non si fa così, cioè se non si leggono le * Entity Tags dal context, EF pensa che i Tags associati * alla Question q che gli arrivano dal FromBody * (tra l'altro correttamente deserializzati) siano delle * Entity Nuove e ne crea di nuovi nel DB. Questo penso sia * Dovuto alla relazione NxM che lega tags a Questions. * Così funziona. C'è un altro metodo per fare prima e * non leggere dal context i tags? * */ List <Tag> _tags = new List <Tag>(); foreach (var t in q.Tags) { Tag contextTag = await _repository.GetTagByIdAsync(t.Id); if (contextTag != null) { _tags.Add(contextTag); } } q.Tags = _tags; if (user != null) { q.UserId = user.UserId; } else { q.UserId = new Guid("00000000-0000-0000-0000-000000000000"); } //to do alert user not found q.UpdateDate = DateTime.Now; RepositoryActionResult <Question> result = _repository.AddQuestion(q); switch (result.Status) { case RepositoryActionStatus.Created: return(Content(System.Net.HttpStatusCode.OK, "Domanda inserita Correttamente")); case RepositoryActionStatus.NothingModified: return(Content(System.Net.HttpStatusCode.OK, "Risultato Not Modified?")); //TODO have I to return OK? case RepositoryActionStatus.Error: return(Content(System.Net.HttpStatusCode.InternalServerError, result.Exception.InnerException.Message)); default: break; } return(Content(System.Net.HttpStatusCode.Ambiguous, result.Status.ToString() + " " + result.Entity.Title)); }