首页 > 解决方案 > EF 无法识别新属性

问题描述

上周我为这个项目创建了我的模型,但本周需要更新它们。首先,我的“Person”类只有一个“Name”属性,现在它有一个“Firstname”和一个“Lastname”属性。现在我得到一个关于“名称”属性的异常,它甚至不再存在。

也没有创建数据库,这很可能是后续错误。

班级人

abstract class Person
{
    [Key]
    public int Id { get; set; }

    [MaxLength(100)]
    public string Firstname { get; set; }

    [MaxLength(100)]
    public string Lastname { get; set; }

    public int Age { get; set; }
}

班级学生

class Student : Person
{
    public School School { get; set; }

    public virtual ICollection<Order> Orders { get; set; } = new List<Order>();
}

尝试添加学生

using (var ctx = new SchoolDbContext())
        {
            ctx.Persons.Add(new Student() {Firstname="Test" });
            ctx.SaveChanges();
        }

数据库上下文

class SchoolDbContext : DbContext
{
    public SchoolDbContext() : base("SchoolDB")
    {

    }

    public DbSet<Person> Persons { get; set; }
    public DbSet<School> Schools { get; set; }
    public DbSet<AArticle> Articles { get; set; }
    public DbSet<APublisher> APublishers { get; set; }
    public DbSet<Order> Orders { get; set; }
    public DbSet<Subject> Subjects { get; set; }

}

例外

System.InvalidOperationException:“属性 'Name' 不是字符串或字节数组。只能为字符串和字节数组属性配置长度。”

我尝试清理解决方案,重新启动 VS,重建和重新清理......由于没有创建数据库,因此无法删除数据库。

我如何通知编译器“名称”属性不再存在,因为他自己没有得到它?

标签: c#entity-frameworkmodel

解决方案


您需要通过所谓的迁移将数据库与您的代码同步:-ef 核心:https : //docs.microsoft.com/de-de/ef/core/managing-schemas/migrations/ -ef 6:https:/ /docs.microsoft.com/en-us/ef/ef6/modeling/code-first/migrations/


推荐阅读