Asp.NET MVC 5 Обновить свойство навигации - PullRequest
0 голосов
/ 22 апреля 2019

Мне нужно обновить, какой объект связан с основным объектом, но когда я обновляю его, он изменяет только идентификатор, когда я использую отладчик, он не меняет объект, связанный с ним, в свойстве навигации ...

вот модели

Main Entity

public class Parametro
{
    public Parametro()
    {
        AlcanceAbastecimento = 3; // Default Nº PAB
    }

    public int Id { get; set; }       
    public int NumTurnos { get; set; }
    public int NumPAB { get; set; }   
    public int? AlcanceAbastecimento { get; set; }
    public int QtdMin { get; set; }
    public int QtdMax { get; set; }
    public int UAPId { get; set; }

    public UAP UAP { get; set; } // Associated entity
}

public class UAP
{
    public int Id { get; set; }
    public string Nome { get; set; }
    public Parametro Parametro { get; set; }
}

это отношение один-к-одному

при редактировании вот вид

@Html.DropDownListFor(model => model.UAPId, (IEnumerable<SelectListItem>)ViewData["UAPS"], "Selecione um UAP", new { @class = "form-control form-control-sm" })

и контроллер для публикации при редактировании

  [HttpPost]
    [ValidateAntiForgeryToken]
    public async Task<ActionResult> Edit([Bind(Include = "Id,NumTurnos,NumPAB,AlcanceAbastecimento,QtdMin,QtdMax,UAPId")] Parametro parametro)
    {
        if (ModelState.IsValid)
        {
            db.Entry(parametro).State = EntityState.Modified;
            await db.SaveChangesAsync();
            return RedirectToAction("Index");
        }

        using (db)
        {
            ViewData["UAPS"] = new SelectList(db.UAP.ToList(), "Id", "Nome");
        }

        return View(parametro);
    }

и на свободном API

  protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();

            modelBuilder.Entity<UAP>()
                        .HasOptional(u => u.Parametro) /
                        .WithRequired(p => p.UAP); /
        }

здесь он только изменяет UAPId, но не фактическую сущность.Чего мне не хватает?

...