我使用过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; }
}
}
错误消息为零,但我的更改未应用。
答案 0 :(得分:0)
我必须删除Migrations文件夹,在Server Explorer中删除数据库,然后在Windows Explorer中,在App Data文件夹中删除我的数据库。重新加载应用程序并构建新数据库,一切正常。