EntityFramework使用错误的tablename

当我尝试从我的Bieren表中获取数据时,我的代码给了我一个EntityCommandExecutionException。

exception消息说它找不到“dbo.Biers”,这很明显,因为它被称为“dbo.Bieren”。

我可以通过重命名数据库中的表来轻松解决这个问题。 Altough我不喜欢修复我的代码错误的数据库。

如何让entity framework使用正确的表而不是更改我的表的名称?

提前致谢。

对于数据库优先方法,StriplingWarrior的解决方案运行良好。 但是,如果使用代码优先方法,则可以在目标实体类上使用System.ComponentModel.DataAnnotations.TableAttribute将实体类映射到数据库表。

但是,这种方式有点烦人,因为我们通常想要定义一个纯实体类。 为此,您可以将其委托给另一个类,或者在DbContext类中使用重写的OnModelCreating方法,如下所示。

  protected override void OnModelCreating(DbModelBuilder modelBuilder) { modelBuilder.Entity() .ToTable("MyCategories"); } 

使用TableAttribute属性装饰您的实体类,例如

 [Table("Bieren")] 

您的entity framework模型包含有关其连接的表名称和连接的信息。 如果您使用的是数据库优先方法,则应该有一个包含数据库模型的EDMX文件。 最简单的方法是从数据库更新模型。

  1. 在Visual Studio中打开EDMX文件
  2. 删除不正确的“Biers”表
  3. 在后台右键单击,然后单击“从数据库更新模型”
  4. 将向导指向您的数据库,然后选择要添加的“Bieren”表
  5. 完成向导,应出现“Bieren”表

也可以深入了解Biers类型的属性,并手动更改表名。