我正在从依赖主键值的现有数据中播种新的EF 6数据库。也就是说,我有两张桌子:
Sessions: { Id int, Title String, Speakers: [x,y,z ints] }
Speakers: { Id int, Name String }
我首先播放所有发言者,不幸的是EF忽略了我为扬声器添加的Id,因此在创建会话时,会话中的SpeakerId都是错误的。
如何从我的扬声器数据中获取主键作为原始主键值从该数据插入而不是自动编号。
答案 0 :(得分:1)
你需要3张桌子,而不是2张。
Sessions: {int Id, string Title}
Speakers: {int Id, string Name}
and
SessionsSpeakers: { int sessionId, int speakerId }
之后,当您设置数据类时,将其设置如下:
var speaker1=new Speaker {Name="Me"};
var speaker2=new Speaker {Name="You"};
var session1=new Session {Title="This"};
var session2=new Session {Title="That"};
db.Speakers.Add(speaker1);
db.Speakers.Add(speaker2);
db.Sessions.Add(session1);
db.Sessions.Add(session2);
db.session1.Speakers.Add(speaker1);
db.session1.Speakers.Add(speaker2);
db.session2.Speakers.Add(speaker1);
db.SaveChanges();