Marco de la entidad:Asignar entidad a propiedad de otra entidad
Pregunta
Tengo estas entidades (esto es sólo una abstracción que creé para esta publicación):
- Idioma
- Distrito
- Descripción
Estas son las referencias entre ellos:
- Distrito * - 1 Idioma
- Descripción * - 1 Idioma
- Distrito 1 - 1 Descripción
Si busco así:
var myFetch = from c in context.Districts
where c.Id = 10
select new { DistrictId = c.Id, Lang = c.Language };
y después de eso, trato de asignarlo a Descripción como esto:
Description desc = Description.CreateDescription(0, "My description");
desc.DistrictReference.EntityKey = new EntityKey("MyEntities.Descriptions", "DistrictId", myFetch.DistrictId);
desc.Language = myFetch.Lang; //throws error
El error arrojado es:
System.InvalidOperationException:La relación no se puede definir porque el nombre de entidad 'myEntities.Descriptions' no es válido para el rol 'Distrito' en el nombre del conjunto de asociación 'myentities.district_description'.
¿Qué estoy haciendo mal?
Solución
Si myFetch
iban a ser una instancia de la clase District
que podría hacerlo mediante programación:
desc.DistrictReference.EntityKey = new EntityKey(
String.Format(
"{0}.{1}",
myFetch.EntityKey.EntityContainerName,
myFetch.EntityKey.EntitySetName),
"DistrictId",
myFetch.DistrictId);
Otros consejos
Justo lo que dice el mensaje:Especificó el nombre del conjunto de entidades incorrecto.
- Abre tu EDMX.
- Abra la ventana del Explorador de modelos.
- Encuentre la entidad del distrito en el navegador de modelos
- Haga clic derecho, elija "Propiedades"
- Tenga en cuenta el nombre correcto del conjunto de entidades
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow