Sto costruendo un WebApi usando .Net Core con EF Core (2.0) e ho riscontrato un problema durante il salvataggio di un elenco di entità.
Il problema è che ho una proprietà di navigazione nella mia entità, qualcosa del tipo:
public class Student
{
public Course Course {get; set;}
}
Per salvare una singola entità la sto usando per evitare di provare a inserire un Corso che esiste già:
student.Course = _context.Courses.Attach(student.Crouse).Entity
Lo trovo brutto e vorrei sapere un modo migliore, ma funziona. A volte autorizzo l'API a ricevere un elenco di Students
e dovrebbe salvarli tutti. Calling Attach
solleva un'eccezione se viene chiamata due volte nello stesso corso.
Tutto quello che volevo era per EF Core per salvare solo l'entità Studente con la chiave esterna corretta, non voglio nulla fatto nell'entità Corso nel database. Qual è il modo migliore per farlo?
Lo trovo brutto e vorrei conoscere un modo migliore
Sì, c'è DTO . Sono proprio come i modelli di dati che creiamo.
Quindi, dovrai creare un CreateStudentDto che userai durante la creazione.
public class Student
{
public int Id { get; set; }
public string Name { get; set; }
...
//this won't contain the -> public Course Course {get; set;}
}
Quindi, quando otterrai l'input o mapperai il tuo input dalla classe di entità a createmodel, Mapper / Input sposterà automaticamente il Corso dalla tua creazione.