asp.net mvc使用EF将数据保存到数据库

时间:2014-10-03 04:52:42

标签: sql-server asp.net-mvc linq entity-framework entity-framework-4

我有一个如下所示的存储库类。我的创建方法就在这里。我将把我的数据保存到我的SQL Server数据库中的3个表中。

我的表格为tblSemesterRegistrationtblSemesterSubjecttblSemesterCampu

此处tblSemesterSubjecttblSemesterCampu的外键来自tblSemesterRegistration。该外键是SemesterID,它是一个自动增量ID。

我的问题是SemesterID外键未保存到tblSemesterCamputblSemesterSubject。但是,当我尝试将数据保存到一个表时,它工作正常。

有没有人知道如何解决这个问题。感谢...

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

2 个答案:

答案 0 :(得分:0)

当您将第一个表添加到上下文时,主键不会生成,直到您不会保存上下文。

因此,在添加第一个表时保存上下文然后运行此代码。我觉得它会起作用。

tblSemesterRegistration tb = new tblSemesterRegistration();
tb.AcadamiYear = model.AcadamiYear;                       
context.tblSemesterRegistrations.Add(tb);
save();

答案 1 :(得分:0)

嗨我解决了这个问题。我的tblSemesterCampu外键是一个可以为空的int值。现在我将其更改为不可为空的int值。现在它正常工作......