在EF4中更改db表名称(实体框架4)

scr*_*pni 14 .net c# entity-framework entity-framework-4

有谁知道如何在EF4(实体框架4)中更改实体的映射数据库表?

稍后编辑:我想我已经在模型浏览器中找到了定义表名的位置.但他们的名字是只读的,所以不可能使用设计师编辑它们.此外,没有引用(从我搜索过的内容)到xml架构中的表名.

Yur*_*nko 23

如果您只需要更改表的名称,您可以:

  1. 使用XML Editor打开EDMX文件.
  2. 在其中找到SSDL部分.
  3. 例如,找到实体集元素<EntitySet Name="Customers" EntityType="ExampleModel.Store.Customers" Schema="dbo" />.
  4. 添加Table="MyTableName"属性.<EntitySet Name="Customers" EntityType="ExampleModel.Store.Customers" Schema="dbo" Table="MyTableName" />

这是一个完整的CSDL,SSDL,MSL规范.

希望有所帮助.

  • 这种方法的问题是每次重新生成db映射时都必须更改它. (2认同)

Tom*_*ski 12

另一种解决方案是覆盖DbContext类中的方法.

public class MyDbContext : DbContext
{
    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Entity<Product>().ToTable("DB_PRODUCTS_TBL");
        // otherwise EF assumes the table is called "Products"
    }
}
Run Code Online (Sandbox Code Playgroud)


小智 7

我相信你要问的是重新配置实体到表的映射.您可以右键单击实体并选择表映射.这将显示表映射的实体.你可以在那里更改表格.但是,当您打开下拉列表时,您将只能看到使用"更新模型"向导导入的表.如果未导入表,则不会列出该表.然后,您可以将属性适当地映射到表的列名称.