MVC保存和加载模型到数据库

时间:2018-06-14 12:17:48

标签: database optimization model-view-controller save load

我有一些代码可以保存数据,创建数据和加载数据库。

但是,有没有办法优化此代码?比如for循环只是为了从列表中为模型赋值?我觉得这很麻烦,因为我有更多的条目要保存并在以后添加。

创建我的表,如果它们不存在:

 using (IRISInSiteLiveEntities DB = new IRISInSiteLiveEntities())
            {

                    ProjectDetails_Deployment projectdetails_Deployment = new ProjectDetails_Deployment();
                    ProjectDetails_DeskTopReview projectdetails_DeskTopReview = new ProjectDetails_DeskTopReview();
                    ProjectDetails_Handover projectdetails_Handover = new ProjectDetails_Handover();
                    ProjectDetails_SiteDetails projectdetails_SiteDetails = new ProjectDetails_SiteDetails();
                    ProjectDetails_Survey projectdetails_Survey = new ProjectDetails_Survey();

                    //Deployment
                    projectdetails_Deployment.ProjectID = id;
                    projectdetails_Deployment.SiteID = siteid;
                    projectdetails_Deployment.Visit = visit;
                    projectdetails_Deployment.SiteName = sitename;

                    //Handover
                    projectdetails_Handover.ProjectID = id;
                    projectdetails_Handover.SiteID = siteid;
                    projectdetails_Handover.Visit = visit;
                    projectdetails_Handover.SiteName = sitename;

                    //DesktopReview
                    projectdetails_DeskTopReview.ProjectID = id;
                    projectdetails_DeskTopReview.SiteID = siteid;
                    projectdetails_DeskTopReview.Visit = visit;
                    projectdetails_DeskTopReview.SiteName = sitename;

                    //SiteDetails
                    projectdetails_SiteDetails.ProjectID = id;
                    projectdetails_SiteDetails.SiteID = siteid;
                    projectdetails_SiteDetails.Visit = visit;
                    projectdetails_SiteDetails.SiteName = sitename;

                    //Survey
                    projectdetails_Survey.ProjectID = id;
                    projectdetails_Survey.SiteID = siteid;
                    projectdetails_Survey.Visit = visit;
                    projectdetails_Survey.SiteName = sitename;

                    DB.ProjectDetails_Deployment.Add(projectdetails_Deployment);
                    DB.SaveChanges();

                    DB.ProjectDetails_Handover.Add(projectdetails_Handover);
                    DB.SaveChanges();

                    DB.ProjectDetails_SiteDetails.Add(projectdetails_SiteDetails);
                    DB.SaveChanges();

                    DB.ProjectDetails_DeskTopReview.Add(projectdetails_DeskTopReview);
                    DB.SaveChanges();

                    DB.ProjectDetails_Survey.Add(projectdetails_Survey);
                    DB.SaveChanges();

            }

将数据保存到我的数据库(使用循环而不是分配每个?)

  //Proceed to save
                ProjectDetails_Deployment existing_projectdetails_Deployment = DB.ProjectDetails_Deployment.Where(x => x.ProjectID == id && x.SiteID == siteid && x.Visit == visit).FirstOrDefault();
                ProjectDetails_DeskTopReview existing_projectdetails_DeskTopReview = DB.ProjectDetails_DeskTopReview.Where(x => x.ProjectID == id && x.SiteID == siteid && x.Visit == visit).FirstOrDefault();
                ProjectDetails_Handover existing_projectdetails_Handover = DB.ProjectDetails_Handover.Where(x => x.ProjectID == id && x.SiteID == siteid && x.Visit == visit).FirstOrDefault();
                ProjectDetails_SiteDetails existing_projectdetails_SiteDetails = DB.ProjectDetails_SiteDetails.Where(x => x.ProjectID == id && x.SiteID == siteid && x.Visit == visit).FirstOrDefault();
                ProjectDetails_Survey existing_projectdetails_Survey = DB.ProjectDetails_Survey.Where(x => x.ProjectID == id && x.SiteID == siteid && x.Visit == visit).FirstOrDefault();

                //Site Details
                existing_projectdetails_SiteDetails.SiteAddress = model.SiteAddress;
                existing_projectdetails_SiteDetails.SitePostcode = model.SitePostcode;
                existing_projectdetails_SiteDetails.NGR = model.NGR;
                existing_projectdetails_SiteDetails.LatAndLongs = model.LatAndLongs;
                existing_projectdetails_SiteDetails.SiteType = model.SiteType;
                existing_projectdetails_SiteDetails.SiteOwner = model.SiteOwner;
                existing_projectdetails_SiteDetails.SiteContactDetails = model.SiteContactDetails;
                existing_projectdetails_SiteDetails.SiteAccessProvider = model.SiteAccessProvider;
                existing_projectdetails_SiteDetails.SiteAccessProvider_ContactDetails = model.SiteAccessProvider_ContactDetails;
                existing_projectdetails_SiteDetails.CabinOOB = model.CabinOOB;
                existing_projectdetails_SiteDetails.CabinOOB_DateChecked = model.CabinOOB_DateChecked;
                existing_projectdetails_SiteDetails.CabinOOB_CheckedBy = model.CabinOOB_CheckedBy;
                existing_projectdetails_SiteDetails.TowerOOB = model.TowerOOB;
                existing_projectdetails_SiteDetails.TowerOOB_DateChecked = model.TowerOOB_DateChecked;
                existing_projectdetails_SiteDetails.TowerOOB_CheckedBy = model.TowerOOB_CheckedBy;
                existing_projectdetails_SiteDetails.SiteOOB = model.SiteOOB;
                existing_projectdetails_SiteDetails.SiteOOB_DateChecked = model.SiteOOB_DateChecked;
                existing_projectdetails_SiteDetails.SiteOOB_CheckedBy = model.SiteOOB_CheckedBy;
                existing_projectdetails_SiteDetails.DailyComments = model.DailyComments;

                existing_projectdetails_SiteDetails.GoldenSite = Convert.ToInt32(Convert.ToBoolean(model.GoldenSite));
                existing_projectdetails_SiteDetails.RopeAccess = Convert.ToInt32(Convert.ToBoolean(model.RopeAccess));
                existing_projectdetails_SiteDetails.SiteSupervisionRequired = Convert.ToInt32(Convert.ToBoolean(model.SiteSupervisionRequired));
                existing_projectdetails_SiteDetails.MEWP = Convert.ToInt32(Convert.ToBoolean(model.MEWP));
                existing_projectdetails_SiteDetails.SpecialistKeys = Convert.ToInt32(Convert.ToBoolean(model.SpecialistKeys));
                existing_projectdetails_SiteDetails.Crane = Convert.ToInt32(Convert.ToBoolean(model.Crane));
                existing_projectdetails_SiteDetails.C4X4ATV = Convert.ToInt32(Convert.ToBoolean(model.C4X4ATV));
                existing_projectdetails_SiteDetails.PMTM = Convert.ToInt32(Convert.ToBoolean(model.PMTM));

                //Survey
                existing_projectdetails_Survey.SurveyType = model.SurveyType;
                existing_projectdetails_Survey.SurveyScope = model.SurveyScope;
                existing_projectdetails_Survey.ProjectScopeDocumentation = model.ProjectScopeDocumentation;
                existing_projectdetails_Survey.SpecialConsiderations = model.SpecialConsiderations;
                existing_projectdetails_Survey.C3rdPartyAttendees = model.C3rdPartyAttendees;
                existing_projectdetails_Survey.SurveyReviewed_Date = model.SurveyReviewed_Date;
                existing_projectdetails_Survey.SurveyUploadedIRIS_Date = model.SurveyUploadedIRIS_Date;
                existing_projectdetails_Survey.SurveyUploadedClient_Date = model.SurveyUploadedClient_Date;
                existing_projectdetails_Survey.SurveyReviewedBy = model.SurveyReviewedBy;
                existing_projectdetails_Survey.SurveyUploadedBy = model.SurveyUploadedBy;
                existing_projectdetails_Survey.SurveyUploadedIRISBy = model.SurveyUploadedIRISBy;
                existing_projectdetails_Survey.SummaryOfSurvey = model.SummaryOfSurvey;
                existing_projectdetails_Survey.SurveyAction1 = model.SurveyAction1;
                existing_projectdetails_Survey.SurveyAction1_Detail = model.SurveyAction1_Detail;
                existing_projectdetails_Survey.SurveyAction1_Owner = model.SurveyAction1_Owner;
                existing_projectdetails_Survey.SurveyAction1_Comments = model.SurveyAction1_Comments;
                existing_projectdetails_Survey.SurveyAction2 = model.SurveyAction2;
                existing_projectdetails_Survey.SurveyAction2_Detail = model.SurveyAction2_Detail;
                existing_projectdetails_Survey.SurveyAction2_Owner = model.SurveyAction2_Owner;
                existing_projectdetails_Survey.SurveyAction2_Comments = model.SurveyAction2_Comments;
                existing_projectdetails_Survey.SurveyAction3 = model.SurveyAction3;
                existing_projectdetails_Survey.SurveyAction3_Detail = model.SurveyAction3_Detail;
                existing_projectdetails_Survey.SurveyAction3_Owner = model.SurveyAction3_Owner;
                existing_projectdetails_Survey.SurveyAction3_Comments = model.SurveyAction3_Comments;

                //DesktopReview
                existing_projectdetails_DeskTopReview.ReviewDate = model.ReviewDate;
                existing_projectdetails_DeskTopReview.ReviewedBy = model.ReviewedBy;
                existing_projectdetails_DeskTopReview.Priority = model.Priority;
                existing_projectdetails_DeskTopReview.OnSiteWorksRequired = model.OnSiteWorksRequired;
                existing_projectdetails_DeskTopReview.QAReviewDate = model.QAReviewDate;
                existing_projectdetails_DeskTopReview.QAReviewBy = model.QAReviewBy;
                existing_projectdetails_DeskTopReview.ClientDatabaseUpdatedDate = model.ClientDatabaseUpdatedDate;
                existing_projectdetails_DeskTopReview.ClientDatabaseUpdatedBy = model.ClientDatabaseUpdatedBy;
                existing_projectdetails_DeskTopReview.WorksWithinprojectScope = model.WorksWithinprojectScope;
                existing_projectdetails_DeskTopReview.ForwardLogisticsRequired = model.ForwardLogisticsRequired;
                existing_projectdetails_DeskTopReview.ForwardLogisticsDetails = model.ForwardLogisticsDetails;
                existing_projectdetails_DeskTopReview.ReverseLogisticsRequired = model.ReverseLogisticsRequired;
                existing_projectdetails_DeskTopReview.ReverseLogisticsDetails = model.ReverseLogisticsDetails;
                existing_projectdetails_DeskTopReview.ClientScope = model.ClientScope;
                existing_projectdetails_DeskTopReview.IRISComments = model.IRISComments;

                DB.Entry(existing_projectdetails_DeskTopReview).State = EntityState.Modified;
                DB.SaveChanges();

                DB.Entry(existing_projectdetails_SiteDetails).State = EntityState.Modified;
                DB.SaveChanges();

                DB.Entry(existing_projectdetails_Survey).State = EntityState.Modified;
                DB.SaveChanges();

我的数据加载:

    if(id == null )
    {
        return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
    }

    //Convert ID from nullable int
    int projectid = id ?? default(int);

    IRISInSiteLiveEntities DB = new IRISInSiteLiveEntities();
    var project = new ProjectDetails_MultipleData();

    project.ProjectID = projectid;
    project.ProjectName = DB.Projects_People.Find(id).ProjectName; //get name by different table.
    project.SiteID = siteid;
    project.SiteName = sitename;
    project.Visit = sitevisit;

    var DetailsExist = DB.ProjectDetails_Deployment.Where(x => x.ProjectID == id && x.SiteID == siteid && x.Visit == sitevisit).FirstOrDefault();

    if (DetailsExist != null)
    {

        //Site Details
        var site_details = DB.ProjectDetails_SiteDetails.Where(x => x.ProjectID == id && x.SiteID == siteid && x.Visit == sitevisit).FirstOrDefault();
        project.SiteAddress = site_details.SiteAddress;
        project.SitePostcode = site_details.SitePostcode;
        project.NGR = site_details.NGR;
        project.LatAndLongs = site_details.LatAndLongs;
        project.SiteType = site_details.SiteType;
        project.SiteOwner = site_details.SiteOwner;
        project.SiteContactDetails = site_details.SiteContactDetails;
        project.SiteAccessProvider = site_details.SiteAccessProvider;
        project.SiteAccessProvider_ContactDetails = site_details.SiteAccessProvider_ContactDetails;
        project.CabinOOB = site_details.CabinOOB;
        project.CabinOOB_DateChecked = site_details.CabinOOB_DateChecked;
        project.CabinOOB_CheckedBy = site_details.CabinOOB_CheckedBy;
        project.TowerOOB = site_details.TowerOOB;
        project.TowerOOB_DateChecked = site_details.TowerOOB_DateChecked;
        project.TowerOOB_CheckedBy = site_details.TowerOOB_CheckedBy;
        project.SiteOOB = site_details.SiteOOB;
        project.SiteOOB_DateChecked = site_details.SiteOOB_DateChecked;
        project.SiteOOB_CheckedBy = site_details.SiteOOB_CheckedBy;
        project.DailyComments = site_details.DailyComments;
        project.GoldenSite = Convert.ToBoolean(Convert.ToInt32(site_details.GoldenSite));
        project.RopeAccess = Convert.ToBoolean(Convert.ToInt32(site_details.RopeAccess));
        project.SiteSupervisionRequired = Convert.ToBoolean(Convert.ToInt32(site_details.SiteSupervisionRequired));
        project.MEWP = Convert.ToBoolean(Convert.ToInt32(site_details.MEWP));
        project.SpecialistKeys = Convert.ToBoolean(Convert.ToInt32(site_details.SpecialistKeys));
        project.Crane = Convert.ToBoolean(Convert.ToInt32(site_details.Crane));
        project.C4X4ATV = Convert.ToBoolean(Convert.ToInt32(site_details.C4X4ATV));
        project.PMTM = Convert.ToBoolean(Convert.ToInt32(site_details.PMTM));

        //Survey
        var survey_details = DB.ProjectDetails_Survey.Where(x => x.ProjectID == id && x.SiteID == siteid && x.Visit == sitevisit).FirstOrDefault();
        project.SurveyType = survey_details.SurveyType;
        project.SurveyScope = survey_details.SurveyScope;
        project.ProjectScopeDocumentation = survey_details.ProjectScopeDocumentation;
        project.SpecialConsiderations = survey_details.SpecialConsiderations;
        project.C3rdPartyAttendees = survey_details.C3rdPartyAttendees;
        project.SurveyReviewed_Date = survey_details.SurveyReviewed_Date;
        project.SurveyUploadedIRIS_Date = survey_details.SurveyUploadedIRIS_Date;
        project.SurveyUploadedClient_Date = survey_details.SurveyUploadedClient_Date;
        project.SurveyReviewedBy = survey_details.SurveyReviewedBy;
        project.SurveyUploadedBy = survey_details.SurveyUploadedBy;
        project.SurveyUploadedIRISBy = survey_details.SurveyUploadedIRISBy;
        project.SummaryOfSurvey = survey_details.SummaryOfSurvey;
        project.SurveyAction1 = survey_details.SurveyAction1;
        project.SurveyAction1_Detail = survey_details.SurveyAction1_Detail;
        project.SurveyAction1_Owner = survey_details.SurveyAction1_Owner;
        project.SurveyAction1_Comments = survey_details.SurveyAction1_Comments;
        project.SurveyAction2 = survey_details.SurveyAction2;
        project.SurveyAction2_Detail = survey_details.SurveyAction2_Detail;
        project.SurveyAction2_Owner = survey_details.SurveyAction2_Owner;
        project.SurveyAction2_Comments = survey_details.SurveyAction2_Comments;
        project.SurveyAction3 = survey_details.SurveyAction3;
        project.SurveyAction3_Detail = survey_details.SurveyAction3_Detail;
        project.SurveyAction3_Owner = survey_details.SurveyAction3_Owner;
        project.SurveyAction3_Comments = survey_details.SurveyAction3_Comments;

        //DesktopReview
        var desktopreview_details = DB.ProjectDetails_DeskTopReview.Where(x => x.ProjectID == id && x.SiteID == siteid && x.Visit == sitevisit).FirstOrDefault();
        project.ReviewDate = desktopreview_details.ReviewDate;
        project.ReviewedBy = desktopreview_details.ReviewedBy;
        project.Priority = desktopreview_details.Priority;
        project.OnSiteWorksRequired = desktopreview_details.OnSiteWorksRequired;
        project.QAReviewDate = desktopreview_details.QAReviewDate;
        project.QAReviewBy = desktopreview_details.QAReviewBy;
        project.ClientDatabaseUpdatedDate = desktopreview_details.ClientDatabaseUpdatedDate;
        project.ClientDatabaseUpdatedBy = desktopreview_details.ClientDatabaseUpdatedBy;
        project.WorksWithinprojectScope = desktopreview_details.WorksWithinprojectScope;
        project.ForwardLogisticsRequired = desktopreview_details.ForwardLogisticsRequired;
        project.ForwardLogisticsDetails = desktopreview_details.ForwardLogisticsDetails;
        project.ReverseLogisticsRequired = desktopreview_details.ReverseLogisticsRequired;
        project.ReverseLogisticsDetails = desktopreview_details.ReverseLogisticsDetails;
        project.ClientScope = desktopreview_details.ClientScope;
        project.IRISComments = desktopreview_details.IRISComments;


    }

    return View(project);

有更清洁漂亮的方式吗?

0 个答案:

没有答案