Je pense avoir lu tous les articles et toutes les questions de débordement de pile à ce sujet, mais je ne trouve pas la solution. Permettez-moi de commencer avec mes modèlesMise à jour des relations FK dans Entity Framework 4.1
public class Entry
{
public Entry()
{
DateEntered = DateTime.Now;
}
public int Id { get; set; }
[Required]
public string FirstName { get; set; }
[Required]
public string LastName { get; set; }
[Required]
public string Email { get; set; }
public string Number { get; set; }
public string FbId { get; set; }
[ReadOnly(true)]
public DateTime DateEntered { get; set; }
public string AccessToken { get; set; }
//Relationsips
public Backgrounds Background { get; set; }
public Cars Car { get; set; }
}
public class Backgrounds
{
public int Id { get; set; }
public string Name { get; set; }
public string Filename { get; set; }
}
public class Cars
{
public int Id { get; set; }
public string Name { get; set; }
public string FileName { get; set; }
}
Maintenant, dans mon contrôleur, je mets à jour l'entrée. Comme suit
// PUT /api/entries/5
public HttpResponseMessage Put(Entry entry)
{
if(ModelState.IsValid)
{
_db.Entries.Attach(entry);
_db.Entry(entry).State = EntityState.Modified;
_db.SaveChanges();
return new HttpResponseMessage(HttpStatusCode.NoContent);
}
throw new HttpResponseException(HttpStatusCode.BadRequest);
}
Mon modèle d'entrée est mis à jour correctement, mais si pour par exemple entry.Background.Name changements, ce ne sera pas persisté à la base de données. Mon contrôleur accepte le modèle entier d'entrée comprenant ses relations => arrière-plans et voitures. Cependant, toute valeur qui est modifiée pour la relation n'est pas mise à jour ou reflétée. Toute solution élégante sans avoir à interroger la base de données puis la mise à jour? Je ne veux pas avoir des requêtes ou des recherches supplémentaires avant de mettre à jour.
Merci
Tyrone