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?

¿Fue útil?

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.

  1. Abre tu EDMX.
  2. Abra la ventana del Explorador de modelos.
  3. Encuentre la entidad del distrito en el navegador de modelos
  4. Haga clic derecho, elija "Propiedades"
  5. Tenga en cuenta el nombre correcto del conjunto de entidades
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top