Mam 3 tabele: Video
, Course
i CourseVideo
. Chcę wstawić wstawkę do CourseVideo
.Entity Framework wstawia wiele do wielu rekordów z istniejącymi rodzicami
Numermoże być lub nie może istnieć, ale kiedy to zrobi, chcę użyć istniejącego rekordu i NIE tworzyć nowego rekordu.
Mój kod wygląda następująco:
var video = db.Videos.SingleOrDefault(c => c.Link.Equals(link));
if(video == null)
{
video = new Video { ... };
db.Videos.Add(video);
db.SaveChanges();
}
var course = db.Courses.Include("Videos").Single(c => c.ID == courseID);
course.Videos.Add(video);
db.SaveChanges();
Dodaje rekord w wielu-do-wielu tabeli (CourseVideo
), ale również tworzy nowy rekord w tabeli Video
.
Jak zapobiec wstawianiu do tabeli Video
, jeśli już istnieje?
W jakim scenariuszu dodaje duplikat wideo: kiedy już istnieje lub kiedy nie istnieje? –
Kiedy już istnieje – socketman
Patrząc na kod, nie widzę powodu, dla którego wstawiłbym go dwa razy. Czy to wszystko w jednym 'użyciu (MyContext)' lub są one pobierane osobno? Oddzielony obiekt 'video' wyjaśniłby zachowanie, które widzisz. –