当我尝试从我的Bieren表中获取数据时,我的代码给了我一个EntityCommandExecutionException。
异常消息说它找不到“dbo.Biers”,这很明显,因为它被称为“dbo.Bieren”。
我可以通过重命名数据库中的表来轻松解决这个问题。尽管如此,我不喜欢修复我的代码错误。
如何让实体框架使用正确的表而不是更改表的名称?
提前致谢。
答案 0 :(得分:8)
对于数据库优先方法,StriplingWarrior的解决方案运行良好。但是,如果使用代码优先方法,则可以在目标实体类上使用System.ComponentModel.DataAnnotations.TableAttribute
将实体类映射到数据库表。
然而,这种方式有点烦人,因为我们通常想要定义一个纯实体类。为此,您可以将其委托给另一个班级,或者使用OnModelCreating
班级中覆盖的DbContext
方法,如下所示。
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Category>()
.ToTable("MyCategories");
}
答案 1 :(得分:7)
使用TableAttribute
属性装饰您的实体类,例如
[Table("Bieren")]
答案 2 :(得分:5)
您的实体框架模型包含有关其连接的表名称和连接的信息。如果您使用的是数据库优先方法,则应该有一个包含数据库模型的EDMX文件。最简单的方法是从数据库更新模型。
也可以深入了解Biers类型的属性,并手动更改表名。