Replies: 4 comments 2 replies
-
@maransi você não tem controle sobre isso, o EF que "manda". Até onde sei, ele olha para o relacionamento e determinal qual melhor "JOIN" utilizar, por isto em determinados momentos ele força o INNER e em outros o LEFT. Qual query você tentou executar que não teve o retorno como esperado? |
Beta Was this translation helpful? Give feedback.
-
Oi Balta Antes de mais nada obrigado pela resposta. As classes que apresentei acima estão de acordo com as configurações do curso, ao executar o código abaixo o SELECT construído pelo EF veio com LEFT JOIN e não com INNER JOIN: using( var context = new BlogDataContext()){
Log: SELECT [c].[Id], [c].[Name], [c].[Slug], [p].[Id], [p].[AuthorId], [p].[Body], [p].[CategoryId], [p].[CreateDate], [p].[LastUpdateDate], [p].[Slug], |
Beta Was this translation helpful? Give feedback.
-
Obrigado pela informação. tentarei simular uma terceira tabela para entender essa situação. Esse cenário que o EF oferece não é bom, pode acarretar em erros de informações indevidas e performance. |
Beta Was this translation helpful? Give feedback.
-
Ah, já ia me esquecendo. Segundo o que li no site da Microsoft, se colocarmos ".IsRequired()" na classe "CategoriaMap" era pra deixar opcional o objeto e aceitar nulo. Na prática, o "INNER JOIN" era pra funcionar; funcionou quando era pra um relacionamento 1:1, mas não funcionou para 1:N. Acho que estamos diante de um "Bugzinho", não acha? builder.HasMany( x => x.Posts ) |
Beta Was this translation helpful? Give feedback.
-
Caros
Seria possível tirar uma dúvida? Quais configurações são necessárias no EF para que os SELECTs gerados sejam criados com INNER JOIN em um relacionamento de 1:N? Fiz as mesmas configurações do curso "Fundamentos Entity Framework" e elas estão saindo no log com LEFT JOIN, abaixo a configuração utilizada entre as tabelas "Category" e "Post":
/*
builder.HasMany( x => x.Posts )
.WithOne( c => c.Category)
.HasForeignKey( x => x.CategoryId )
.IsRequired( false );
*/
builder.HasIndex( x => x.Slug, "IX_Category_Slug")
.IsUnique();
}
}
e
0 votes ·
Beta Was this translation helpful? Give feedback.
All reactions