簡體   English   中英

實體框架與現有父母一起插入多對多記錄

[英]Entity Framework insert many to many record with existing parents

我有3個表: VideoCourseCourseVideo 我想插入CourseVideo

Video可能有也可能沒有現有記錄,但是當它出現時我想使用現有記錄而不創建新記錄。

我的代碼看起來像這樣:

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();

這會在多對多表( CourseVideo )中添加記錄,但它也會在Video表中創建新記錄。

如果已存在,則如何阻止插入Video表?

要阻止插入Video表(如果已存在),添加的視頻必須位於上下文中。 您無需為新視頻調用savechanges()。

在默認情況下,EF不檢查是否存在N:M關系的條目。

您應該將您的課程更改放在if語句中:

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();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM