Tôi có 3 bảng: Video
, Course
và CourseVideo
. Tôi muốn làm một chèn vào CourseVideo
.Khung thực thể chèn nhiều bản ghi với cha mẹ hiện có
Video
có thể có hoặc không có bản ghi hiện có, nhưng khi nào tôi muốn sử dụng bản ghi hiện có và KHÔNG tạo bản ghi mới.
Mã của tôi trông như thế này:
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();
này thêm một kỷ lục trong nhiều-nhiều bảng (CourseVideo
) nhưng nó cũng tạo ra một kỷ lục mới trong bảng Video
.
Làm cách nào để ngăn việc chèn vào bảng Video
nếu nó đã tồn tại?
Trong trường hợp nào nó thêm video trùng lặp: khi nó đã tồn tại hoặc khi nó không tồn tại? –
Khi nó đã tồn tại – socketman
Nhìn vào mã tôi không thấy lý do tại sao nó sẽ chèn nó hai lần. Có phải tất cả điều này trong một câu lệnh 'using (MyContext)' hay chúng được truy xuất riêng biệt? Một đối tượng 'video' tách rời sẽ giải thích hành vi bạn đang thấy. –