Entity Framework: entidade Atribuir a propriedade de outra entidade
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?
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
- Abra o seu EDMX.
- Abra a janela do navegador do modelo.
- Encontre a entidade Distrito no navegador Modelo
- Clique com o direito, escolha "Propriedades"
- Observe o nome da entidade conjunto correto
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow