Вставка данных в несколько таблиц с использованием FK с использованием Entity Framework

Movie - ID, Name, Description, DirectorID-Fk, MusicID-Fk
Director - ID, Name 
Music - ID, MusicName 

Сейчас я пытаюсь вставить новую запись в фильм, но я не знаю, существует ли Director в БД и то же самое с музыкой).

Из интерфейса я беру all movie information, DirectorName and MusicName,

Теперь, когда я сохраняю информацию, я должен проверить, directorname а также musicname сначала а потом как сделать SaveChanges() к контексту.

Дайте мне знать, как это работает.

1 ответ

Решение

Если у вас есть только DirectorName а также MusicNameВы должны запросить БД, чтобы получить существующие записи (или узнать, что они еще не существуют в БД). Если они существуют, добавьте их в свою сущность фильмов; если нет, создайте новые и добавьте их:

var directorToAdd = context.Directors.FirstOfDefault(d => d.Name == DirectorName) ??
                    new Director { Name = DirectorName };

var musicToAdd = context.MusicSet.FirstOrDefault(m => m.Name == MusicName) ??
                 new Music { Name = MusicName };

movie.Director = directorToAdd;
movie.Music = musicToAdd;

context.AddToMovies(movie);
context.SaveChanges();
Другие вопросы по тегам