我有一个如下所示的存储库类。我的创建方法就在这里。我将把我的数据保存到我的SQL Server数据库中的3个表中。
我的表格为tblSemesterRegistration
,tblSemesterSubject
和tblSemesterCampu
。
此处tblSemesterSubject
和tblSemesterCampu
的外键来自tblSemesterRegistration
。该外键是SemesterID
,它是一个自动增量ID。
我的问题是SemesterID
外键未保存到tblSemesterCampu
或tblSemesterSubject
。但是,当我尝试将数据保存到一个表时,它工作正常。
有没有人知道如何解决这个问题。感谢...
public string Create(SemesterRegistationModel model, string SubjectCredit)
{
tblSemesterRegistration tb = new tblSemesterRegistration();
tb.AcadamiYear = model.AcadamiYear;
context.tblSemesterRegistrations.Add(tb);
foreach (string subjectcredit in array)
{
string[] arraycredit = subjectcredit.Split(',');
arraycredit = arraycredit.Where(x => !string.IsNullOrEmpty(x)).ToArray();
int subject1 = Convert.ToInt32(arraycredit[0]);
tblSemesterSubject tbss = new tblSemesterSubject();
tbss.SemesterID = tb.SemesterID;
tbss.Subject = subject1;
context.tblSemesterSubjects.Add(tbss);
}
foreach (CampusSelectModel Campus in model.lst_campus)
{
tblSemesterCampu tbcam = new tblSemesterCampu();
tbcam.SemesterID = tb.SemesterID;
tbcam.CampusName = Campus.Name;
context.tblSemesterCampus.Add(tbcam);
}
Save();
model.SemesterID = tb.SemesterID;
}
答案 0 :(得分:0)
当您将第一个表添加到上下文时,主键不会生成,直到您不会保存上下文。
因此,在添加第一个表时保存上下文然后运行此代码。我觉得它会起作用。
tblSemesterRegistration tb = new tblSemesterRegistration();
tb.AcadamiYear = model.AcadamiYear;
context.tblSemesterRegistrations.Add(tb);
save();
答案 1 :(得分:0)
嗨我解决了这个问题。我的tblSemesterCampu外键是一个可以为空的int值。现在我将其更改为不可为空的int值。现在它正常工作......