Pergunta

Eu tenho essas entidades (isto é apenas uma abstração que eu criei para este post):

  • Idioma
  • Distrito
  • Descrição

Estas são as referências entre eles:

  • Distrito * - 1 Idioma
  • Descrição * - 1 Idioma
  • Distrito 1-1 Descrição

Se eu buscar assim:

var myFetch = from c in context.Districts
              where c.Id = 10
              select new { DistrictId = c.Id, Lang = c.Language };

e, depois disso, eu tente atribuí-la para Descrição como este:

Description desc = Description.CreateDescription(0, "My description");
desc.DistrictReference.EntityKey = new EntityKey("MyEntities.Descriptions", "DistrictId", myFetch.DistrictId);
desc.Language = myFetch.Lang; //throws error

O erro lançada é:

System.InvalidOperationException: O relação não pode ser definida devido o nome EntitySet 'MyEntities.Descriptions' é não é válido para o papel 'District' em nome do conjunto associação 'MyEntities.District_Description'.

O que estou fazendo de errado?

Foi útil?

Solução

Se myFetch eram para ser uma instância da classe District você poderia fazê-lo por meio de programação:

desc.DistrictReference.EntityKey = new EntityKey(  
  String.Format(  
    "{0}.{1}",   
    myFetch.EntityKey.EntityContainerName,   
    myFetch.EntityKey.EntitySetName),   
  "DistrictId", 
  myFetch.DistrictId);  

Outras dicas

Apenas o que a mensagem diz:. Você especificou o nome conjunto de entidades errado

  1. Abra o seu EDMX.
  2. Abra a janela do navegador do modelo.
  3. Encontre a entidade Distrito no navegador Modelo
  4. Clique com o direito, escolha "Propriedades"
  5. Observe o nome da entidade conjunto correto
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top