我一直在尝试在我的项目中添加一个控制器,但我一直收到错误消息
An item with the same key has already been added.
同时这样做。
我仍然是这方面的初学者,所以我可能没有注意到什么,但我没有在我的模型中看到任何重复的键。这是我的数据库图表,可以大致了解我正在尝试做的事情:
我正在使用Applications
as theModel Class
和ApplicationServices
as the data Context Class
while 试图创建我的ApplicationController
并得到错误
An item with the same key has already been added.
有什么想法我可能做错了吗?
我创建的模型如下:
实体.cs:
using Microsoft.VisualBasic;
using System.Data.Entity;
using System.Data.Entity.ModelConfiguration.Conventions;
using System.ComponentModel.DataAnnotations;
namespace PostGraduate.Models
{
public class ApplicationServices : DbContext
{
public DbSet<Application.Users> Users { get; set; }
public DbSet<Application.Addresses> Addresses { get; set; }
public DbSet<Application.Applications> Applications { get; set; }
public DbSet<Application.ForeignLanguages> ForeignLanguages { get; set; }
public DbSet<Application.Gmat> Gmat { get; set; }
public DbSet<Application.PostGradStudies> PostGradStudies { get; set; }
public DbSet<Application.PreGradStudies> PreGradStudies { get; set; }
public DbSet<Application.Schoolarships> Schoolarships { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Entity<Application.Users>().HasKey(a => a.UserId);
modelBuilder.Entity<Application.Addresses>().HasKey(a => a.Addresses_Id);
modelBuilder.Entity<Application.Applications>().HasKey(a => a.Applications_Id);
modelBuilder.Entity<Application.Applications>().Property(a => a.Applications_Id).HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);
modelBuilder.Entity<Application.ForeignLanguages>().HasKey(a => a.ForeignLanguages_Id);
modelBuilder.Entity<Application.Gmat>().HasKey(a => a.Gmat_Id);
modelBuilder.Entity<Application.Gmat>().Property(a => a.Gmat_Id).HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);
modelBuilder.Entity<Application.PostGradStudies>().HasKey(a => a.PostGradStudies_Id);
modelBuilder.Entity<Application.PostGradStudies>().Property(a => a.PostGradStudies_Id).HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);
modelBuilder.Entity<Application.PreGradStudies>().HasKey(a => a.PreGradStudies_Id);
modelBuilder.Entity<Application.Schoolarships>().HasKey(a => a.Schoolarships_Id);
modelBuilder.Entity<Application.Schoolarships>().Property(a => a.Schoolarships_Id).HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);
modelBuilder.Entity<Application.Users>().HasRequired(a => a.Applications).WithRequiredPrincipal(i => i.Users);
modelBuilder.Entity<Application.Applications>().HasMany(a => a.Addresses).WithRequired(i => i.Applications).HasForeignKey(i => i.Application_Id);
modelBuilder.Entity<Application.Applications>().HasMany(a => a.ForeignLanguages).WithRequired(i => i.Applications).HasForeignKey(i => i.Application_Id);
modelBuilder.Entity<Application.Applications>().HasOptional(a => a.Gmat).WithRequired(i => i.Applications);
modelBuilder.Entity<Application.Applications>().HasOptional(a => a.PostGradStudies).WithRequired(i => i.Applications);
modelBuilder.Entity<Application.Applications>().HasMany(a => a.PreGradStudies).WithRequired(i => i.Applications).HasForeignKey(i => i.Application_Id);
modelBuilder.Entity<Application.Applications>().HasOptional(a => a.Schoolarships).WithRequired(i => i.Applications);
}
}
}
应用程序.cs:
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Web;
namespace PostGraduate.Models.Application
{
public class Applications
{
public Applications()
{
this.Addresses = new HashSet<Addresses>();
this.PreGradStudies = new HashSet<PreGradStudies>();
this.ForeignLanguages = new HashSet<ForeignLanguages>();
}
internal void BuildAddress(int p)
{
for (int i = 0; i < p; i++)
{
Addresses.Add(new Addresses());
}
}
internal void BuildPreGradStudies (int p)
{
for (int i = 0; i < p; i++)
{
PreGradStudies.Add(new PreGradStudies());
}
}
internal void BuildForeignLanguages(int p)
{
for (int i = 0; i < p; i++)
{
ForeignLanguages.Add(new ForeignLanguages());
}
}
public virtual Users Users { get; set; }
public virtual Gmat Gmat { get; set; }
public virtual PostGradStudies PostGradStudies { get; set; }
public virtual Schoolarships Schoolarships { get; set; }
public virtual ICollection<Addresses> Addresses { get; set; }
public virtual ICollection<PreGradStudies> PreGradStudies { get; set; }
public virtual ICollection<ForeignLanguages> ForeignLanguages { get; set; }
[ScaffoldColumn(false)]
public string Applications_Id { get; set; }
[ScaffoldColumn(false)]
public DateTime ApplicationDate { get; set; }
[Required]
public string FathersName { get; set; }
[Required]
public DateTime? Birthdate { get; set; }
[Required]
public string Birthplace { get; set; }
[Required]
public string Identification { get; set; }
[Required]
public string Country { get; set; }
[Required]
public string MobileNumber { get; set; }
[Required]
public string Profession { get; set; }
public string Activity { get; set; }
public string PostGradExtra { get; set; }
public string PostGradReapplication { get; set; }
public string ExtraInformation { get; set; }
[Required]
public string PostGradSource { get; set; }
}
}
地址.cs:
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Web;
namespace PostGraduate.Models.Application
{
public class Addresses
{
public virtual Applications Applications { get; set; }
[ScaffoldColumn(false)]
public string Addresses_Id { get; set; }
[ScaffoldColumn(false)]
public string Application_Id { get; set; }
[Required]
public string StreetAddress { get; set; }
[Required]
public string City { get; set; }
[Required]
public string PostalCode { get; set; }
[Required]
public string PhoneNumber { get; set; }
}
}
ForeignLanguages.cs:
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Web;
namespace PostGraduate.Models.Application
{
public class ForeignLanguages
{
public virtual Applications Applications { get; set; }
[ScaffoldColumn(false)]
public string ForeignLanguages_Id { get; set; }
[ScaffoldColumn(false)]
public string Application_Id { get; set; }
public string Language { get; set; }
public string LanguageDegree { get; set; }
public string Admission { get; set; }
public bool Delete { get; set; }
}
}
Gmat.cs:
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Web;
namespace PostGraduate.Models.Application
{
public class Gmat
{
public virtual Applications Applications { get; set; }
[ScaffoldColumn(false)]
public string Gmat_Id { get; set; }
public DateTime? GmatDate { get; set; }
public string GmatGrade { get; set; }
}
}
PostGradStudies.cs:
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Web;
namespace PostGraduate.Models.Application
{
public class PostGradStudies
{
public virtual Applications Applications { get; set; }
[ScaffoldColumn(false)]
public string PostGradStudies_Id { get; set; }
public string Aei { get; set; }
public string PostGradTitle { get; set; }
public string PostGradLength { get; set; }
public string PostGradGrade { get; set; }
public string PostGradProject { get; set; }
public string PostGradProjectGrade { get; set; }
}
}
PreGradStudies.cs:
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Web;
namespace PostGraduate.Models.Application
{
public class PreGradStudies
{
public virtual Applications Applications { get; set; }
[ScaffoldColumn(false)]
public string PreGradStudies_Id { get; set; }
[ScaffoldColumn(false)]
public string Application_Id { get; set; }
public string University { get; set; }
public string Department { get; set; }
public string Admission { get; set; }
public string Graduation { get; set; }
public string DegreeGrade { get; set; }
public string ThesisSubject { get; set; }
public string ThesisGrade { get; set; }
public bool Delete { get; set; }
}
}
Schoolarships.cs:
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Web;
namespace PostGraduate.Models.Application
{
public class Schoolarships
{
public virtual Applications Applications { get; set; }
[ScaffoldColumn(false)]
public string Schoolarships_Id { get; set; }
public string Schoolar { get; set; }
public string SchoolarshipProfession { get; set; }
public string SchoolarshipInstitution { get; set; }
}
}
用户.cs:
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Web;
namespace PostGraduate.Models.Application
{
public class Users
{
public virtual Applications Applications { get; set; }
public string UserId { get; set; }
public string UserName { get; set; }
}
}