Em termos de entidades (ou objetos), você tem um Class
objeto que possui uma coleção de Students
e um Student
objeto que possui uma coleção de Classes
. Como sua StudentClass
tabela contém apenas os Ids e nenhuma informação extra, o EF não gera uma entidade para a tabela de junção. Esse é o comportamento correto e é o que você espera.
Agora, ao fazer inserções ou atualizações, tente pensar em termos de objetos. Por exemplo, se você deseja inserir uma classe com dois alunos, crie o Class
objeto, os Student
objetos, adicione os alunos à Students
coleção da classe, adicione o Class
objeto ao contexto e chame SaveChanges
:
using (var context = new YourContext())
{
var mathClass = new Class { Name = "Math" };
mathClass.Students.Add(new Student { Name = "Alice" });
mathClass.Students.Add(new Student { Name = "Bob" });
context.AddToClasses(mathClass);
context.SaveChanges();
}
Isso criará uma entrada na Class
tabela, duas entradas na Student
tabela e duas entradas na StudentClass
tabela ligando-as.
Você basicamente faz o mesmo para atualizações. Basta buscar os dados, modificar o gráfico adicionando e removendo objetos de coleções, chamar SaveChanges
. Verifique esta questão semelhante para obter detalhes.
Editar :
De acordo com seu comentário, você precisa inserir um novo Class
e adicionar dois existentes Students
a ele:
using (var context = new YourContext())
{
var mathClass= new Class { Name = "Math" };
Student student1 = context.Students.FirstOrDefault(s => s.Name == "Alice");
Student student2 = context.Students.FirstOrDefault(s => s.Name == "Bob");
mathClass.Students.Add(student1);
mathClass.Students.Add(student2);
context.AddToClasses(mathClass);
context.SaveChanges();
}
Como os dois alunos já estão no banco de dados, eles não serão inseridos, mas como agora estão na Students
coleção de Class
, duas entradas serão inseridas na StudentClass
tabela.