我从实体框架收到这个奇怪的错误,我无法弄清楚我在做什么错..

我的数据库上下文代码。

  public DbSet<Interaction> Interactions { get; set; }

        public DbSet<User> Users { get; set; }

        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            InteractionsDBContextConfig(modelBuilder);

            base.OnModelCreating(modelBuilder);
        }

        public static void InteractionsDBContextConfig(DbModelBuilder modelBuilder)
        {
            modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
            // Interaction entity configuration.
            modelBuilder.Entity<Interaction>()
                .HasKey<int>(key => key.InteractionId);


            modelBuilder.Entity<Interaction>()
                .HasRequired<Form>(x => x.Form)
                .WithMany()
                .HasForeignKey(y => y.FormId);


            modelBuilder.Entity<Interaction>()
               .HasRequired<User>(x => x.User)
               .WithMany()
               .HasForeignKey(y => y.InteractionUserId);


            // User entity configuration.

            modelBuilder.Entity<User>()
                .HasKey<int>(x => x.UserId);

            modelBuilder.Entity<User>()
                .Property(x => x.UserName)
                .IsRequired()
                .HasColumnAnnotation(
                    IndexAnnotation.AnnotationName,
                    new IndexAnnotation(
                        new System.ComponentModel.DataAnnotations.Schema.IndexAttribute() { IsUnique = true }
                        )
                );
        }


我的实体

public class Interaction
    {
        public int InteractionId { get; set; }
        public int FormId { get; set; }
        public string InteractionName { get; set; }
        public virtual Form Form { get; set; }
        public int InteractionUserId { get; set; }

        public virtual User User { get; set; }
        public DateTime Deadline { get; set; }
        public int InteractionType { get; set; }
    }


当我执行以下操作时

var db = dbcontext.Interactions.ToList();


我收到以下错误


  {“无效的列名'InteractionType'。”}


我无法弄清楚为什么会出现错误,为什么实体框架看不到我的专栏?更改列的名称似乎没有帮助。

最佳答案

可能您更改了Interactions类,添加了“ InteractionType”属性,该属性未反映在数据库上,因此您需要使用Migrations。
在Visual Studio视图>其他Windows>程序包管理器控制台上打开菜单,然后在程序包管理器控制台上编写“启用迁移”,然后按Enter。
然后将在您的项目中生成一个名为“ Migrations”的文件夹,该文件夹中包含Configuration类,在那里您需要将AutomaticMigrationsEnabled属性设置为“ true”,如下所示。

  public Configuration()
    {
        AutomaticMigrationsEnabled = true;
    }


您回到Package Manager控制台并输入命令“ Update-Database”,您的项目将再次运行。

关于c# - Entity Framework :无效的列名,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32230254/

10-10 05:22