我从实体框架中得到这个奇怪的错误,我无法弄清楚我做错了什么..
我的数据库上下文代码。
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();
我收到以下错误
{&#34;列名无效&#39; InteractionType&#39;。&#34;}
我无法弄清楚错误出现的原因,为什么不能让Entity框架看到我的专栏?更改列的名称似乎没有帮助。
答案 0 :(得分:3)
可能您更改了Interactions类添加了“InteractionType”属性,但它没有反映在数据库中,您需要使用迁移。
在Visual Studio视图&gt;上打开菜单其他Windows&gt;包管理器控制台,然后在包管理器控制台上写入“启用 - 迁移”并按Enter键
然后将在你的项目中生成一个名为“Migrations”的文件夹,该文件夹包含Configuration类,你需要将AutomaticMigrationsEnabled属性设置为“true”,如下所示。
public Configuration()
{
AutomaticMigrationsEnabled = true;
}
您回到软件包管理器控制台并编写命令“Update-Database”,您的项目将再次运行。
答案 1 :(得分:0)
我找不到错误显示的原因。
我最后使用此处提到的方法重置了所有迁移:https://stackoverflow.com/a/22451879/2794980
我猜迁移历史记录表和迁移.CS文件存在某种不匹配。
重置一切解决了我的问题。