支持';雇员详细信息上下文';自数据库创建以来,上下文已更改

本文关键字:上下文 详细信息 支持 数据库 创建 | 更新日期: 2023-09-27 17:59:04

嗨,我正在使用带有Fluent API的实体框架在DB中创建表。当我创建我的第一个项目时,它工作正常。表已经在提到的数据库中创建。当试图创建第二个项目时显示错误

自创建数据库以来,支持"EmployeeDetailsContext"上下文的模型已更改。考虑使用代码优先迁移来更新数据库(http://go.microsoft.com/fwlink/?LinkId=238269)

我想在数据库中创建与我的值相关的表(EmployeeDetails.cs)

EmployeeDetails.cs是

public class EmployeeDetails
    {
        public int EmployeeId { get; set; }
        //[StringLength(20)]
        public string FirstName { get; set; }
       //[StringLength(20)]
        public string LastName { get; set; }
        //[MaxLength(3)]
        public int EmpAge { get; set; }
        //[StringLength(100)]
        public string Address { get; set; }
        public int MobileNO { get; set; }
        public int EmpRankId { get; set; }
        public string JobTitle { get; set; }
    }

EmployeeDetailsContext.cs

public class EmployeeDetailsContext:DbContext
    {
        public DbSet<EmployeeDetails> employeedet { get; set; }
        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            base.OnModelCreating(modelBuilder);
            // The primary Key for the EmployeeId
            modelBuilder.Entity<EmployeeDetails>().HasKey(t => t.EmployeeId);

            // The Identity Key for the EmployeeId
            modelBuilder.Entity<EmployeeDetails>().Property(c => c.EmployeeId).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);
            //max length for FirstName
            modelBuilder.Entity<EmployeeDetails>()
                        .Property(d => d.FirstName).IsRequired()
                        .HasMaxLength(20);
            //max length for LastName
            modelBuilder.Entity<EmployeeDetails>()
                       .Property(d => d.LastName).IsRequired()
                      .HasMaxLength(20);
            modelBuilder.Entity<EmployeeDetails>()
                     .Property(d => d.EmpAge).IsOptional();
            modelBuilder.Entity<EmployeeDetails>()
                      .Property(d => d.Address).IsOptional();
            //modelBuilder.Entity<Employee>()
            //         .Property(d => d.MobileNO).IsRequired();
            modelBuilder.Entity<EmployeeDetails>()
                      .Property(d => d.EmpRankId).IsRequired();
            modelBuilder.Entity<EmployeeDetails>()
                     .Property(d => d.JobTitle).IsOptional();
        }
    }

连接字符串是

 <connectionStrings>
  <add name="EmployeeDetailsContext" connectionString="Data Source=inchser001'inchdb002; database=Test1;Persist Security Info=True;User ID=sa;Password=*******" providerName="System.Data.SqlClient" />
 </connectionStrings>

当我创建我的第一个项目时,它工作得很好。表已经在提到的数据库中创建。当试图创建第二个项目时显示错误

自创建数据库以来,支持"EmployeeDetailsContext"上下文的模型已更改。考虑使用代码优先迁移来更新数据库(http://go.microsoft.com/fwlink/?LinkId=238269)。

我想在数据库中创建与我的值相关的表(EmployeeDetails.cs)

我试了一些糖(https://stackoverflow.com/)但它不起作用。。。

提供一些想法,这将帮助我进一步推动

支持';雇员详细信息上下文';自数据库创建以来,上下文已更改

您只需要按照错误消息所述的操作:使用代码优先迁移。

  1. 通过在VS中打开包控制台窗口(TOOLS->NuGet package Manager->package Manager控制台)启用代码迁移
  2. 在那里运行命令"启用迁移"
  3. 假设您不需要更改上下文中的任何内容,请运行"添加迁移X",其中X是您想要为该迁移命名的任何名称
  4. 然后只需运行"更新数据库"

参考