如何阻止实体框架自动编号主键



我正在根据主键值的现有数据播种一个新的EF 6数据库。也就是说,我有两张桌子:

Sessions:  { Id int, Title String, Speakers: [x,y,z ints] }
Speakers:  { Id int, Name String }

我首先对所有演讲者进行种子测试,不幸的是,EF忽略了我为演讲者输入的Id,所以当创建会话时,会话中的SpeakerId都是错误的。

如何从扬声器数据中获取主键,并将其作为该数据中的原始主键值插入,而不是自动编号。

您需要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();

最新更新