Mettre à jour le Model en utilisant des propriétés de navigation
	
	
		Bonjour,
Je vous explique mon problème. J'ai 2 entités ( Instructor et OfficeAssignement) .
	Code:
	
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
   |  
public class OfficeAssignement
    {
 
        [Key]
        [ForeignKey("Instructor")]
        public int InstructorID { get; set; }
        public string Location { get; set; }
 
        public virtual Instructor Instructor { get; set; }
    }
 
    public class Instructor
    {
        [Display(Name = "Full Name")]
        public string FullName
        {
            get { return FirstName + " " + LastName; }
        }
 
        [Key]
        public int InstructorID { get; set; }
        public string LastName { get; set; }
        public string FirstName { get; set; }
 
        [Display(Name = "Date of hire")]
        [DataType(DataType.Date)]
        [DisplayFormat(DataFormatString = "{0: yyyy-MM-dd}", ApplyFormatInEditMode = true)]
        public DateTime HireDate { get; set; }
 
        public ICollection<Course> Courses { get; set; }
        public OfficeAssignement OfficeAssignement { get; set;}
        public ICollection<Department> Departments { get; set; }
    } | 
 Ce que je veux c'est pouvoir lister tous les éléments de la classe Instructor avec la location. Cela marche parfaitement en utilisant la propriété de navigation OfficeAssignement grâce à laquelle je récupère la Location.
Dans la vue de l'instructor, je mets : 
	Code:
	
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
   |  
<table class="table">
    <tr>
        <th>
            @Html.DisplayNameFor(model => model.OfficeAssignement.Location)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.FullName)
        </th>
         <th>
            @Html.DisplayNameFor(model => model.HireDate)
        </th>
 
        <th></th>
    </tr>
 
@foreach (var item in Model) {
    <tr>
        <td>
            @Html.DisplayFor(modelItem => item.OfficeAssignement.Location)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.FullName)
        </td>
 
        <td>
            @Html.DisplayFor(modelItem => item.HireDate)
        </td> | 
 
En revanche : quand je veux éditer, rien ne se passe. En effet, j'ai toujours eu l'habitude d'utiliser des clés étrangères ( grâce à par exemple une locationID qui aurait pu se trouver dans l'entité Instructor). 
Donc j'arrive bien à récupérer les données mais pas à mettre à jour.
Voici mon code pour l'instant dans l'action Edit du controler Instructor:
	Code:
	
1 2 3 4 5 6 7 8 9 10 11 12 13 14
   |  
[HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult Edit([Bind(Include="InstructorID,LastName,FirstName,HireDate")] Instructor instructor)
        {
            if (ModelState.IsValid)
            {
                db.Entry(instructor).State = EntityState.Modified;
                db.SaveChanges();
                return RedirectToAction("Index");
            }
            ViewBag.InstructorID = new SelectList(db.OfficeAssignements, "InstructorID", "Location", instructor.InstructorID);
            return View(instructor);
        } | 
 
Voici pour l'instant mon code dans la vue Edit :
	Code:
	
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
   |  
 
<div class="form-group">
            @Html.LabelFor(model => model.FirstName, new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.EditorFor(model => model.FirstName)
                @Html.ValidationMessageFor(model => model.FirstName)
            </div>
        </div>
 
        <div class="form-group">
            @Html.LabelFor(model => model.HireDate, new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.EditorFor(model => model.HireDate)
                @Html.ValidationMessageFor(model => model.HireDate)
            </div>
        </div>
        <div class="form-group">
            @Html.LabelFor(model => model.OfficeAssignement, new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.EditorFor(model => model.OfficeAssignement)
                @Html.ValidationMessageFor(model => model.OfficeAssignement)
            </div>
        </div> | 
 
Est-ce que je suis obligé de créer une clé étrangère ( par ex locationId au sein de l'entité Instructor) ? 
Ou alors est-il possible de tout faire avec une propriété de navigation ?
Merci beaucoup pour votre aide