База данных Entity Framework не обновляется, ошибок нет - PullRequest
0 голосов
/ 17 октября 2019

Я использовал add-migration, а затем update-database - оба работают без ошибок, но изменений, которые я запрашиваю, не произошло. Я проверяю данные своей таблицы в обозревателе серверов, и он не добавляет новый столбец вместе с другими новыми данными. Я приложил свой код, если вам нужно больше кода, пожалуйста, дайте мне знать.

Я создал еще одну миграцию и скопировал те же самые изменения, которые будут добавлены к новым изменениям, чтобы посмотреть, будет ли новая. Migrations/Update2.cs и Migrations/Update1.cs - это один и тот же точный код.

//Migrations/Update2.cs "The updated Migration"

namespace EnrollmentApplication.Migrations
{
    using System;
    using System.Data.Entity.Migrations;

    public partial class Update2 : DbMigration
    {
        public override void Up()
        {
            AddColumn("dbo.Courses", "InstructorName", c => c.String());
            AddColumn("dbo.Enrollments", "Notes", c => c.String());
            AddColumn("dbo.Students", "Age", c => c.Int(nullable: false));
            AlterColumn("dbo.Courses", "CourseTitle", c => c.String(nullable: false, maxLength: 150));
            AlterColumn("dbo.Courses", "CourseCredits", c => c.String(nullable: false, maxLength: 4));
            AlterColumn("dbo.Enrollments", "Grade", c => c.String(nullable: false));
            AlterColumn("dbo.Enrollments", "AssignedCampus", c => c.String(nullable: false));
            AlterColumn("dbo.Enrollments", "EnrollmentSemester", c => c.String(nullable: false));
            AlterColumn("dbo.Students", "StudentFirstName", c => c.String(nullable: false, maxLength: 50));
            AlterColumn("dbo.Students", "StudentLastName", c => c.String(nullable: false, maxLength: 50));
        }

        public override void Down()
        {
            AlterColumn("dbo.Students", "StudentLastName", c => c.String());
            AlterColumn("dbo.Students", "StudentFirstName", c => c.String());
            AlterColumn("dbo.Enrollments", "EnrollmentSemester", c => c.String());
            AlterColumn("dbo.Enrollments", "AssignedCampus", c => c.String());
            AlterColumn("dbo.Enrollments", "Grade", c => c.String());
            AlterColumn("dbo.Courses", "CourseCredits", c => c.String());
            AlterColumn("dbo.Courses", "CourseTitle", c => c.String());
            DropColumn("dbo.Students", "Age");
            DropColumn("dbo.Enrollments", "Notes");
            DropColumn("dbo.Courses", "InstructorName");
        }
    }
}


//Models/Course.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ComponentModel.DataAnnotations;

namespace EnrollmentApplication.Models
{
    public class Course : IValidatableObject
    {
        public virtual int CourseId { get; set; }
        [Required,]
        [StringLength(150)]
        public virtual string CourseTitle { get; set; }
        public virtual string CourseDescription { get; set; }
        [Required]
        [StringLength(4), MinLength(1)]
        public virtual string CourseCredits { get; set; }

        public virtual string InstructorName { get; set; }

        public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
        {
            // Validation 1: Credits have to be between 1-4

            if(CourseDescription.Split (' ').Length > 100)
            {
                yield return (new ValidationResult("Your description is too verbose"));
            }

            throw new NotImplementedException();
        }
    }
}

//Models/Enrollment.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ComponentModel.DataAnnotations;

namespace EnrollmentApplication.Models
{
    public class Enrollment
    {
        public virtual int EnrollmentId { get; set; }
        public virtual int StudentId { get; set; }
        public virtual int CourseId { get; set; }

        [Required]
        [RegularExpression("[A-F])")]
        public virtual string Grade { get; set; }
        public virtual Student Student { get; set; }
        public virtual Course Course { get; set; }
        public virtual bool IsActive { get; set; }

        [Required]
        public virtual int AssignedCampus { get; set; }

        [Required]
        public virtual string EnrollmentSemester { get; set; }

        [Required]
        public virtual int EnrollmentYear { get; set; }

        [RegularExpression(@"^[0-9a-zA-Z''-'\s]{1,40}$",
        ErrorMessage = "Invalid Characters")]
        public virtual string Notes { get; set; }
    }
}

//Models/Student.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ComponentModel.DataAnnotations;

namespace EnrollmentApplication.Models
{
    public class Student
    {
        public virtual int StudentID { get; set; }

        [Required]
        [StringLength(50)]
        public virtual string StudentFirstName { get; set; }

        [Required]
        [StringLength(50)]
        public virtual string StudentLastName { get; set; }

        //MinimumAge(20)
        [MinimumAge(20)]
        public virtual int Age { get; set; }

        public virtual string Address1 { get; set; }
        public virtual string Address2 { get; set; }
        public virtual string City { get; set; }
        [MaxLength(5)]
        [MinLength(5)]
        [RegularExpression(@"^[0-9a-zA-Z''-'\s]{1,40}$",
        ErrorMessage = "Enter a 5 digit zipcode")]
        public virtual string Zipcode { get; set; }
        [MaxLength(2)]
        [MinLength(2)]
        [RegularExpression(@"^[0-9a-zA-Z''-'\s]{1,40}$",
        ErrorMessage = "Enter a 2 digit State code")]
        public virtual string State { get; set; }
    }
}

Нет сообщений об ошибках, но мои изменения не применяются.

1 Ответ

0 голосов
/ 22 октября 2019

Мне пришлось удалить папку «Миграции», «Удалить базу данных в обозревателе серверов», а в проводнике Windows удалить мою базу данных в папке «Данные приложения». Перезагрузил приложение и создал новую базу данных, и все прошло правильно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...