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文件。 最简单的方法是从数据库更新模型。
- 在Visual Studio中打开EDMX文件
- 删除不正确的“Biers”表
- 在后台右键单击,然后单击“从数据库更新模型”
- 将向导指向您的数据库,然后选择要添加的“Bieren”表
- 完成向导,应出现“Bieren”表
也可以深入了解Biers类型的属性,并手动更改表名。