EF Code-First缓存坏表名?

Posted

技术标签:

【中文标题】EF Code-First缓存坏表名?【英文标题】:EF Code-First cached bad table name? 【发布时间】:2012-05-18 19:42:51 【问题描述】:

我有一个使用代码优先实体框架 4.3.1 的控制台应用程序。我创建了一个类、一个 DbContext、一个 DbSet,并且我有一个数据库连接。

问题是我拼错了表名,程序抛出了错误。我更改了 DbSet 中的名称,系统不断抛出与旧名称相同的错误。

例子:

public DbSet<SHIPPER> SHIPPERs  get; set; 

这在 SQL 服务器中找不到 SHIPPERs 表。没问题。我把它改成

public DbSet<SHIPPER> SHIPPER  get; set; 

我得到无效的对象名称'dbo.SHIPPERs'。”

我在 Visual Studio 中搜索了 SHIPPER,但没有返回任何内容。我错过了什么?

注意:我为不同的表创建了另一个 DbSet,并且可以正常工作。

【问题讨论】:

我认为这个问题与 PluralizingTableNameConvention 有关。我将名称输入为复数形式,然后当我删除“s”时,Pluralizing 开始了。我的解决方法是在类上添加一个 DataAnnotation。 【参考方案1】:

问题在于多元化。在 DbContext 类中添加以下代码以解决此问题:

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    
        modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
    

【讨论】:

以上是关于EF Code-First缓存坏表名?的主要内容,如果未能解决你的问题,请参考以下文章

EF搜索数据自动将表名变复数问题

如何取得和EF core mapped entity的表名

C# EF 使用sqlite 数据库出现表名出现dbo的坑

EF中获取当前上下文的表名

如何取得和EF core mapped entity的表名

EF 中获取 TableAttribute的值,即数据库中真实的表名