Principales respuestas
DataBinding: 'System.Data.Entity.DynamicProxies'

Pregunta
-
Hola, me encontré con este problema:
DataBinding: 'System.Data.Entity.DynamicProxies.Cliente_AE7156ACE459BF948563119A86738C00189070818C6C0017CC26CF3596203E13' no contiene una propiedad con el nombre 'Apellido Nombre'
Línea 40: @Html.LabelFor(model => model.ClienteId, "Dueño") Línea 41: <div class='input-group'> Línea 42: @Html.DropDownList("ClienteId", (IEnumerable<SelectListItem>)ViewBag.Clientes, "Seleccione Dueño", new { @class = "form-control" }) Línea 43: <span class="btn btn-success input-group-addon" id="btnCliente"> Línea 44: <span class="fa fa-plus"></span>
Alguien sabrá como darle solución?
Tengo los campos Nombre y Apellido separados, así que para mostrarlo en el combobox, los uní en una nueva propiedad que llame NombreCompleto(Apellido + Nombre), que retorna el valor que quiero mostrar en el combobox. El problema principal es que este error no me salta todo el tiempo, hay ocasiones en las que continúa sin ningún problema y otras en que me sale el error.
Esta propiedad está mapeada en mi clase del modelo, estoy trabajando con entity framework, así que tiene el atributo notmapped, para que no lo reconozca como un campo de la base de datos.
Además habrá un modo de hacer esto?
cliente = context.Cliente
.Where(x => x.NombreCompleto.contains(query)).ToList();Al no ser un campo de la base de datos, linq no lo reconoce. Y quiero buscar al cliente por su nombre completo y me liste las coincidencias.
- Editado Shoy777 jueves, 8 de junio de 2017 12:02
Respuestas
-
Hola Shoy777,
Gracias por visitar los foros comentarte que este thread no ha tenido actividad por un largo tiempo por lo cual procederé a hacer el cierre del mismo.
Saludos
Joyce
__________________________________________________________________________________________
Por favor, recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, hace que sea más fácil para los otros visitantes encontrar la solución más tarde. Microsoft ofrece este servicio de forma gratuita, con la finalidad de ayudar a los usuarios y la ampliación de la base de datos de conocimientos relacionados con los productos y tecnologías de Microsoft. Este contenido es proporcionado "tal cual" y no implica ninguna responsabilidad de parte de Microsoft.- Marcado como respuesta Joyce_ACModerator jueves, 22 de junio de 2017 16:15
Todas las respuestas
-
hola
lo que veo es que no deberias asignar directo el resultado de la query al viewbag porque esta definiendo un proxy
que pasa si usas
var clientes = context.Cliente .Where(x => x.NombreCompleto.contains(query)) .Select(x=> new Cliente(){ ClienteId = x.ClienteId, Apellido = x.Apellido, Nombre = x.Nombre }).ToList(); ViewBag.Clientes = new SelectList(clientes , "ClienteId", "NombreCompleto");
saludos
Leandro Tuttini
Blog
MVP Profile
Buenos Aires
Argentina -
Hola, gracias por la respuesta, pero no me queda muy claro eso de los proxys.
Este es el método que trae los clientes para el DropDrownList
public List<Cliente> GetAllClientes() { List<Cliente> clientes = new List<Cliente>(); using (var context = new VeterinariaBDContext()) { try { clientes = context.Cliente .OrderBy(x => x.Apellido).ToList(); } catch (Exception e) { Message = e.Message; } } return clientes; }
Y este es el campo adicional
No tengo problemas mostrando este valor, el problema se da cuando quiero capturar el valor para enviarlo a la BD[NotMapped] public string NombreCompleto { get { return Apellido + " " + Nombre; } }
Y este el ViewBag que paso al DropDrownList
/*Problema 1*/
ViewBag.Clientes = new SelectList(cliente.GetAllClientes(), "ClienteId", "NombreCompleto"); @Html.DropDownList("ClienteId", (IEnumerable<SelectListItem>)ViewBag.Clientes, "Seleccione Dueño", new { @class = "form-control" })
Este es otra pregunta pero con el mismo campo que adicional.
Mediante ajax quiero que me traigan a los clientes de acuerdo al nombre completopublic JsonResult GetClienteByQuery(string query) { VeterinariaBDContext context = new VeterinariaBDContext(); List<Cliente> cliente = new List<Cliente>(); context.Configuration.ProxyCreationEnabled = false; cliente = context.Cliente .Where(x => x.NombreCompleto.Contains(query)).ToList(); return Json(cliente); }
- Editado Shoy777 jueves, 8 de junio de 2017 20:57
-
Hola Shoy777,
Gracias por visitar los foros, comentarte que este thread no ha tenido actividad por un largo tiempo,
por lo cual preguntarte, ¿Haz podido resolver tu consulta?, de ser así sería de
gran ayuda para futuros usuarios pudieras compartirnos tu solución.
Saludos
Joyce__________________________________________________________________________________________
Por favor, recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, hace que sea más fácil para los otros visitantes encontrar la solución más tarde. Microsoft ofrece este servicio de forma gratuita, con la finalidad de ayudar a los usuarios y la ampliación de la base de datos de conocimientos relacionados con los productos y tecnologías de Microsoft. Este contenido es proporcionado "tal cual" y no implica ninguna responsabilidad de parte de Microsoft. -
Hola Shoy777,
Gracias por visitar los foros comentarte que este thread no ha tenido actividad por un largo tiempo por lo cual procederé a hacer el cierre del mismo.
Saludos
Joyce
__________________________________________________________________________________________
Por favor, recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, hace que sea más fácil para los otros visitantes encontrar la solución más tarde. Microsoft ofrece este servicio de forma gratuita, con la finalidad de ayudar a los usuarios y la ampliación de la base de datos de conocimientos relacionados con los productos y tecnologías de Microsoft. Este contenido es proporcionado "tal cual" y no implica ninguna responsabilidad de parte de Microsoft.- Marcado como respuesta Joyce_ACModerator jueves, 22 de junio de 2017 16:15