【问题标题】:Getting Invalid column name 'CompanyLocationId' in entity framework .net core在实体框架.net核心中获取无效的列名“CompanyLocationId”
【发布时间】:2022-01-09 12:05:30
【问题描述】:

我从数据库中删除了名为 Company 的表中的 company_location_id 列。 然后我从模型类中删除了属性 CompanyLocationId。 但我遇到了错误。

 public DbSet<Company> Company { get; set; }

我在 DBContext 类中设置的以上属性。

  //[Column("company_location_id")]
    //[ForeignKey(nameof(CompanyLocation))]
    //public int? CompanyLocationId { get; set; }

    [Column("created_by")]
    [ForeignKey(nameof(AppUser))]
    public int CreatedBy { get; set; }

    [Column("creation_date")]
    public DateTime CreationDate { get; set; }

我评论了上面的属性,因为我从表中删除了该列。

但是从公司表中获取数据时,我遇到了错误。仅供参考,我正在使用存储库设计模式和实体框架。

【问题讨论】:

  • 查看堆栈跟踪以了解错误来自何处,如果您仍需要帮助,请将损坏的代码添加到您的问题中。如果没有看到任何代码或任何东西,我们将无法帮助您。
  • 您遇到的错误是什么原因造成的?可以附上代码吗?
  • @Conman_123 我添加了一些代码,以便您了解。
  • Entity Framework 为您的数据库维护一个单独的模型(与您的类模型一起),并使用它来生成查询。如果在不更新模型的情况下删除列,则会出现这种错误。使用 Code First,您应该首先注释/删除属性,通过创建迁移更新模型,然后(最后一件事)针对数据库运行该迁移以删除列。手动更新数据库不是代码优先,可能会破坏。
  • @phuzi 非常准确地回答了您的问题。对模型进行任何更改后,您应该添加迁移并更新数据库以避免任何此类错误。

标签: entity-framework asp.net-core entity-framework-core


【解决方案1】:

VR,您刚刚从 DBContext 类中评论了您的属性,但是当您打开 ADO.NET 实体数据模型 (.edmx) 文件时,您仍会看到该特定表中的特定列。

你可以这样做:

  1. 通过刷新数据库中的表来更新您的 (.edmx) 文件。

  2. 从您的实体数据模型 (.edmx) 文件中删除所有实体,然后从您的数据库中重新添加。

更多关于(.edmx)文件的信息,可以阅读我的文章How to create an ADO.NET Entity Data Model (EDM)

我希望这对你有用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-08-21
    • 2021-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多