¿Cómo excluye las propiedades del enlace al llamar a UpdateModel ()?

Tengo un modelo de vista enviado a la acción de edición de mi controlador. ViewModel contiene referencias a EntityObjects. (sí, estoy bien con eso y no necesito querer duplicar todas las propiedades de las entidades en el modelo de vista).

Instanto el modelo de vista y luego llamo UpdateModel. Recibo un error de que una propiedad es "nula", lo cual está bien ya que es un modelo relacionado. Estoy tratando de excluir que la propiedad se vincule durante el enlace del modelo. Al depurarlo, veo en la entidad donde el archivador del modelo intenta establecer el valor de la propiedad en nulo.

Aquí está mi acción de edición:

var model = new SimplifiedCompanyViewModel(id);

var excludeProperties = new string[] { 
   "Entity.RetainedEarningsAccount.AccountNo"
   ,"Property.DiscountEarnedAccount.ExpenseCodeValue"
   ,"Entity.EntityAlternate.EntityID"
   ,"Property.BankAccount.BankAccountID"
   ,"Entity.PLSummaryAccount.AccountNo"
   ,"Property.RefundBank.BankAccountID"
   ,"Company.Transmitter.TCC"
};

try
{
    UpdateModel<SimplifiedCompanyViewModel>(model, String.Empty, null, excludeProperties);

    if (ModelState.IsValid)
    {
       //db.SaveChanges();
    }
       return RedirectToAction("Index");
}
catch
{
    return View(model);
}

He analizado algunos otros problemas sobre la especificación de un "prefijo", pero no creo que ese sea el problema, ya que le estoy diciendo que se vincule a la instancia del modelo de vista, no solo al objeto de entidad.

¿Estoy excluyendo las propiedades correctamente? Lo extraño es que solo parece suceder en este artículo. Sospecho que puede ser un problema con el hecho de que en realidad no hay un banco de reembolso relacionado con mi entidad. Pero tengo otros elementos relacionados que no existen y no veo el mismo problema.

Más información ... ya que me dijeron que el modelo no está bien diseñado.

La empresa está relacionada con una cuenta bancaria. La vista Empresa muestra el BankAccount.BankAccountId actualmente relacionado y hay un campo oculto con BankAccount.Key. Uso la función de autocompletar jQueryUI para proporcionar un menú desplegable de la cuenta bancaria que muestra el BankAccount.BankAccountId y cuando se selecciona uno, el código jQuery cambia el campo oculto para tener el valor clave correcto. Por lo tanto, cuando esto se publique, no quiero que se modifiquen las cuentas bancarias actuales BankAccountID, por lo tanto, quiero omitir el enlace de ese campo.

Si excluyo BankAccountId en el modelo y luego en la vista de edición de BankAccount, el usuario nunca podrá cambiar el BankAccountId ya que no estará vinculado. No estoy seguro de cómo esto indica un diseño de modelo deficiente.

Respuestas a la pregunta(8)

Su respuesta a la pregunta