Mon code ci-dessous enregistre correctement l'enregistrement mais n'enregistre pas le client. Je ne reçois aucune erreur, il enregistre l'enregistrement dans DB, mais ne crée pas de relation avec le client parent. Pendant le débogage, j'ai vérifié que le client var contient effectivement un objet client.Entity Framework Code Le premier enregistrement de mise à jour n'économise pas le parent
Toute aide est très appréciée!
Quoi qu'il en soit voici mon code:
using (var context = new TDBContext())
{
if (SelectedProject != null)
{
var client = (from x in context.Clients
where x.ID == (Guid) comboClient.SelectedValue
select x).FirstOrDefault();
Project project = new Project()
{
ID = (Guid) SelectedProject,
ProjectCode = textProjectCode.Text,
Client = client,
ProjectStart = dateProjectStart.SelectedDate,
Active = checkActive.IsChecked
};
context.Projects.Attach(project);
context.Entry(project).State = EntityState.Modified;
context.SaveChanges();
}
else
{
MessageBox.Show("Project ID not loaded!", "Error!", MessageBoxButton.OK, MessageBoxImage.Error);
}
}
L'entité du projet:
public Project()
{
}
[Key]
public Guid ID { get; set; }
public string ProjectCode { get; set; }
public Client Client { get; set; }
public DateTime? ProjectStart { get; set; }
public bool? Active { get; set; }
L'entité cliente:
public Client()
{
}
[Key]
public Guid ID { get; set; }
public string ClientName { get; set; }
public byte[] ClientLogo { get; set; }
public ICollection<Project> Projects { get; set; }
Sorte de manière géniale de le faire (je chercherais le client et mettrais à jour sa collection enfant), mais cela fonctionnerait probablement si vous définissiez aussi l'état d'entité de Project.Client à modifier aussi. De plus, je préfère 'First()' 'FirstOrDefault()' quand je compte sur l'existence de l'enregistrement parent. Je voudrais au moins m'assurer que ce n'est pas nul. –