在实体框架.net核心中获取无效的列名“CompanyLocationId”
Posted
技术标签:
【中文标题】在实体框架.net核心中获取无效的列名“CompanyLocationId”【英文标题】:Getting Invalid column name 'CompanyLocationId' in entity framework .net core 【发布时间】: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 非常准确地回答了您的问题。对模型进行任何更改后,您应该添加迁移并更新数据库以避免任何此类错误。 【参考方案1】:VR,您刚刚从 DBContext 类中评论了您的属性,但是当您打开 ADO.NET 实体数据模型 (.edmx) 文件时,您仍会看到该特定表中的特定列。
你可以这样做:
通过刷新数据库中的表来更新您的 (.edmx) 文件。
从您的实体数据模型 (.edmx) 文件中删除所有实体,然后从您的数据库中重新添加。
更多关于(.edmx)文件的信息,可以阅读我的文章How to create an ADO.NET Entity Data Model (EDM)
我希望这对你有用。
【讨论】:
以上是关于在实体框架.net核心中获取无效的列名“CompanyLocationId”的主要内容,如果未能解决你的问题,请参考以下文章
F# System.Runtime.InteropServices 对 SendInput 的本机库调用在 .net 框架中有效,但在 .net 核心中无效