EntityFramework使用错误的tablename

Wes*_* T. 9 c# entity-framework-4.1 asp.net-mvc-3

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

异常消息说它找不到"dbo.Biers",这是非常明显的,因为它被称为"dbo.Bieren".

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

如何让实体框架使用正确的表而不是更改表的名称?

提前致谢.

Jin*_*ung 8

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

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

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Entity<Category>()
        .ToTable("MyCategories");
    }
Run Code Online (Sandbox Code Playgroud)


Rya*_*man 8

TableAttribute属性装饰你的实体类,例如

[Table("Bieren")]
Run Code Online (Sandbox Code Playgroud)


Str*_*ior 5

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

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

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