网页不可用MVC 4

时间:2016-03-01 00:06:32

标签: c# asp.net-mvc entity-framework relational-database

我的应用程序运行正常,直到我添加了3个新类(Administrator,Department和Depot)并更改了数据访问层中的IssueContext.cs。 由于我的IssueContext已被更改,我需要更新我的数据库所以我在包管理器控制台中使用update-database然后我得到了这个(在新窗口中打开选项卡) enter image description here

这很奇怪,因为它以前工作得非常好。然后我安装了Entity Framework然后更新数据库工作。 但是,当我点击我的用户标签或关于标签时,他们会给我一个"网页不可用"但索引页面有效。这可能是一个关系数据库映射问题,我没有正确映射我的新类吗?

注意:我也尝试过安装MVC,但MVC Razor只是崩溃了所有内容。

enter image description here

这是我的实体图 enter image description here

User.cs

public class User
{

    public int UserID { get; set; }
    [StringLength(50, MinimumLength = 1)]
    public string LastName { get; set; }
    [StringLength(50, MinimumLength = 1, ErrorMessage = "First name cannot be longer than 50 characters.")]

    [Column("FirstName")]
    public string FirstMidName { get; set; }

    [DataType(DataType.Date)]
    [DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]
    public DateTime EnrollmentDate { get; set; }

    public string FullName
    {
        get { return LastName + ", " + FirstMidName; }
    }
    public int AdministratorID { get; set; }
    [ForeignKey("AdministratorID")]
    public virtual Administrator Administrator { get; set; }

    public int DepartmentID { get; set; }
    [ForeignKey("DepartmentID")]
    public virtual Department Department { get; set; }


    public int DepotID { get; set; }
    [ForeignKey("DepotID")]
    public virtual Depot Depot { get; set; }

    public int TicketID { get; set; }
    //Setting up relationships A use can apply for any number of tickets, so Tickets is defined as a collection of Ticket entities.
    public virtual ICollection<Ticket> Users { get; set; }

}

Ticket.cs

public class Ticket
{
    public string Issue { get; set; } 
    [DisplayFormat(NullDisplayText = "No Priority")]
    public Priority? Priority { get; set; }
    //Category One to Many Ticket
    public int CategoryID { get; set; }
    [ForeignKey("CategoryID")]
    public virtual Category Category { get; set; }
    //User (One to Many) Ticket
    public int UserID { get; set; }
    public int TicketID { get; set; }
    [ForeignKey("TicketID")]
    public virtual User User { get; set; }
    public int AdminID { get; set; }
    public virtual ICollection<Administrator> Administrators { get; set; }

}

Depot.cs

public class Depot
{
    public int DepotID { get; set; }

    [StringLength(50, MinimumLength = 3)]
    public string Name { get; set; }

    public virtual ICollection<User> Users { get; set; }

}

Department.cs

public class Department
{
    public int DepartmentID { get; set; }

    [StringLength(50, MinimumLength = 3)]
    public string Name { get; set; }

    public virtual ICollection<User> Users { get; set; }
}

Category.cs

public class Category
{
    [DatabaseGenerated(DatabaseGeneratedOption.None)]
    public int CategoryID { get; set; }
    public string Title { get; set; }

    public virtual ICollection<Ticket> Tickets { get; set; }
}

Administrator.cs

    public class Administrator
{
    [Key, ForeignKey("User")]
    public int UserID { get; set; }
    public int AdminID { get; set; }
    public int TicketID { get; set; }        
    [StringLength(50)]
    public string AdminRole { get; set; }
    public virtual ICollection<Ticket> Tickets { get; set; }
    public virtual User User { get; set; }
}

Context.cs

public class IssueContext : DbContext
    {
        public DbSet<User> Users { get; set; }
        public DbSet<Ticket> Tickets { get; set; }
        public DbSet<Category> Categories { get; set; }
        public DbSet<Department> Departments { get; set; }
        public DbSet<Administrator> Administrators { get; set; }
        public DbSet<Depot> Depots { get; set; }

        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();

        modelBuilder.Entity<Ticket>()
            .HasMany(c => c.Administrators).WithMany(i => i.Tickets)
            .Map(t => t.MapLeftKey("TicketID")
                .MapRightKey("AdministratorID")
                .ToTable("AdministratorsTickets"));


        modelBuilder.Entity<Administrator>()
                   .HasKey(e => e.UserID);

        modelBuilder.Entity<User>()
            .HasOptional(s => s.Administrator) // Mark StudentAddress is optional for Student
            .WithRequired(ad => ad.User); // Create inverse relationship


        }
    }

0 个答案:

没有答案