Bonjour,

Je souhaite réaliser des relations 0..1->1 mais je suis confronté a une erreur.
Mon ID se réinitialise lors de la modification de la table.

Mes classes:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public class Rent
{
    public Guid Id { get; set; }
    public string Ref { get; private set; }
    public DateTime Availability { get; set; }
    public virtual RentPrice Price { get; set; }
}
public class RentPrice
{
    [ScaffoldColumn(false)]
    public Guid Id { get; set; }
    public double Amount { get; set; }
    public RentPriceType Type { get; set; }
}
Controlleur:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
public ActionResult Create()
{
    return View();
} 
 
[HttpPost]
public ActionResult Create(Rent rent)
{
    if (ModelState.IsValid)
    {
        rent.Id = Guid.NewGuid();
        db.Rents.Add(rent);
        rent.Price.Id = rent.Id;
        db.SaveChanges();
        return RedirectToAction("Index");  
    }
    return View(rent);
}
 
public ActionResult Edit(Guid id)
{
    var rent = db.Rents.Find(id);
    return View(rent);
}
 
[HttpPost]
public ActionResult Edit(Rent rent)
{
    if (ModelState.IsValid)
    {
        db.Entry(rent).State = EntityState.Modified;
        db.Entry(rent.Price).State = EntityState.Modified;
        db.SaveChanges();
 
        return RedirectToAction("Index");
    }
    return View(rent);
}
Je peux créer des données (j'ai vérifié dans la base de données et les tables Rent et Price sont bien créés avec les meme Id).
Mais lorsque je vais a la page Edit et que je sauvegarde, j'obtiens l'erreur suivante sur la ligne db.SaveChanges(); :
Store update, insert, or delete statement affected an unexpected number of rows (0). Entities may have been modified or deleted since entities were loaded. Refresh ObjectStateManager entries.
Sur la page Edit les champs de la table Price ont bien les bonnes valeurs, mais que je débogue je remarque que rent.Price.Id = "0000-0000-0000-0000" dans ma fonction Edit(Rent rent), d'ou l'impossibilité de mettre a jour un enregistrement dont l'ID n'existe pas.

Auriez-vous une idée pourquoi l'ID de mon entité Price se réinitialise en Guid vide?

Merci d'avance.