mdolia
شنبه 15 آبان 1395, 18:44 عصر
سلام من قبلا با asp.net برنامه نویسی کردم اما برای یه پروژه قصد استفاده از asp.net mvc دارم. من از نسخه 5 mvc به همراه نسخه 6 Entity framework استفاده میکنم و رویکرد first code رو انتخاب کردم. من چند تا کلاس دارم که اول برای تست بدون اینکه ارتباطاتشون رو بنویسم پیاده سازیشون کردم و بعد از اضافه کردن کنترلر بدون مشکل اجرا شد و در دیتابیس جداول من بدون هیچ مشکلی ساخته شد.اما برای اینکه دیگه به صورت کامل پیادشون کنم ارتباطاتشون رو هم اضافه کردم اما دیگه نمیتونم کنترلر اضافه کنم یه خطایی میده که هر چی سرچ میکنم دلیلش رو متوجه نمیشم!
143365
143366
اینم دوتا از کلاسهام که با هم ارتباط دارند
[Table("TblLocation")]
public class Location
{
[Key]
public int ID { get; set; }
[Required]
[DisplayName("کشور")]
public string Country { get; set; }
[Required]
[DisplayName("استان")]
public string State { get; set; }
[Required]
[DisplayName("شهر")]
public string City { get; set; }
[DisplayName("منطقه")]
public string Zone { get; set; }
public virtual ICollection<Expert> experts{ get; set; }
}
[Table("TblExpert")]
public class Expert:Person
{
[Required]
[DisplayName("کد عضویت")]
public string EnCode { get; set; } //شماره عضویت
[Required]
[DisplayName("شماره پروانه")]
public string LicenseNo { get; set; }//شماره پروانه
[Required]
[DisplayName("تاریخ اولین صدور پروانه")]
[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{yyyy/MM/dd}", ApplyFormatInEditMode = true)]
[Column(TypeName = "datetime2")]
public DateTime? LicenseNoStart { get; set; }
[Required]
[DisplayName("تاریخ انقضای آخرین پروانه")]
[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{yyyy/MM/dd}", ApplyFormatInEditMode = true)]
[Column(TypeName = "datetime2")]
public DateTime? LicenseNoEnd { get; set; }
[DisplayName("پایه طراحی")]
public Grade DesGrade { get; set; }
[Required]
[DisplayName("پایه نظارت")]
public Grade SupervisGrade { get; set; }
[DisplayName("امتیاز مثبت سالانه")]
public long Score { get; set; } //امتیاز مثبت سالانه
[DisplayName("امتیاز منفی سالانه")]
public int? NegScore { get; set; }//امتیاز منفی
[DataType(DataType.Password)]
[DisplayName("کلمه عبور")]
public string password { get; set; }
[DisplayName("شهر حوزه فعالیت ")]
public LorestanCity CityWork { get; set; }
[DisplayName("شهر محل صدور")]
public int? CityId { get; set; }
public virtual ICollection<ExpertsHistory> expertshistory { get; set; }
public virtual ICollection<Building> buildings { get; set; }
[ForeignKey("CityId")]
public virtual Location location { get; set; }
}
اینم data access layer
public class NezamBarghDAL:DbContext
{
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
modelBuilder.Entity<Expert>().HasOptional<Location>(s => s.location)
.WithMany(s => s.experts).HasForeignKey(s => s.CityId);
}
public DbSet<Person> people { get; set; }
public DbSet<Expert> Experts { get; set; }
public DbSet<Facility> Facilitys { get; set; }
public DbSet<Manager> Managers { get; set; }
public DbSet<Owner> Owners { get; set; }
public DbSet<Location> locations { get; set; }
public DbSet<BuildingGroup> buildingGroups { get; set; }
public DbSet<FieldOfStudy> fieldOfStudies { get; set; }
public DbSet<Building> buidings { get; set; }
public DbSet<ExpertsHistory> expertHistories { get; set; }
}
من برای تست دوباره ارتباطات رو حذف کردم و کنترلر ها رو برگردوندم اما بعدش دوباره اضافه کردم واما بعدش هر کدوم از لینک های مربوط به اکشن های کنترلرها رو اجرا میکردم همین خطا دوباره تکرار میشد
لطفا راهنماییم کنید چون بدجوری کارم گیر کرده
143365
143366
اینم دوتا از کلاسهام که با هم ارتباط دارند
[Table("TblLocation")]
public class Location
{
[Key]
public int ID { get; set; }
[Required]
[DisplayName("کشور")]
public string Country { get; set; }
[Required]
[DisplayName("استان")]
public string State { get; set; }
[Required]
[DisplayName("شهر")]
public string City { get; set; }
[DisplayName("منطقه")]
public string Zone { get; set; }
public virtual ICollection<Expert> experts{ get; set; }
}
[Table("TblExpert")]
public class Expert:Person
{
[Required]
[DisplayName("کد عضویت")]
public string EnCode { get; set; } //شماره عضویت
[Required]
[DisplayName("شماره پروانه")]
public string LicenseNo { get; set; }//شماره پروانه
[Required]
[DisplayName("تاریخ اولین صدور پروانه")]
[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{yyyy/MM/dd}", ApplyFormatInEditMode = true)]
[Column(TypeName = "datetime2")]
public DateTime? LicenseNoStart { get; set; }
[Required]
[DisplayName("تاریخ انقضای آخرین پروانه")]
[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{yyyy/MM/dd}", ApplyFormatInEditMode = true)]
[Column(TypeName = "datetime2")]
public DateTime? LicenseNoEnd { get; set; }
[DisplayName("پایه طراحی")]
public Grade DesGrade { get; set; }
[Required]
[DisplayName("پایه نظارت")]
public Grade SupervisGrade { get; set; }
[DisplayName("امتیاز مثبت سالانه")]
public long Score { get; set; } //امتیاز مثبت سالانه
[DisplayName("امتیاز منفی سالانه")]
public int? NegScore { get; set; }//امتیاز منفی
[DataType(DataType.Password)]
[DisplayName("کلمه عبور")]
public string password { get; set; }
[DisplayName("شهر حوزه فعالیت ")]
public LorestanCity CityWork { get; set; }
[DisplayName("شهر محل صدور")]
public int? CityId { get; set; }
public virtual ICollection<ExpertsHistory> expertshistory { get; set; }
public virtual ICollection<Building> buildings { get; set; }
[ForeignKey("CityId")]
public virtual Location location { get; set; }
}
اینم data access layer
public class NezamBarghDAL:DbContext
{
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
modelBuilder.Entity<Expert>().HasOptional<Location>(s => s.location)
.WithMany(s => s.experts).HasForeignKey(s => s.CityId);
}
public DbSet<Person> people { get; set; }
public DbSet<Expert> Experts { get; set; }
public DbSet<Facility> Facilitys { get; set; }
public DbSet<Manager> Managers { get; set; }
public DbSet<Owner> Owners { get; set; }
public DbSet<Location> locations { get; set; }
public DbSet<BuildingGroup> buildingGroups { get; set; }
public DbSet<FieldOfStudy> fieldOfStudies { get; set; }
public DbSet<Building> buidings { get; set; }
public DbSet<ExpertsHistory> expertHistories { get; set; }
}
من برای تست دوباره ارتباطات رو حذف کردم و کنترلر ها رو برگردوندم اما بعدش دوباره اضافه کردم واما بعدش هر کدوم از لینک های مربوط به اکشن های کنترلرها رو اجرا میکردم همین خطا دوباره تکرار میشد
لطفا راهنماییم کنید چون بدجوری کارم گیر کرده