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

时间:2010-07-18 19:39:18

标签: c# .net entity-framework entity-framework-4

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

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

6 个答案:

答案 0 :(得分:21)

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

  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" />
  5. 这是一个完整的CSDL, SSDL, MSL specification

    希望有所帮助。

答案 1 :(得分: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"
    }
}

答案 2 :(得分:7)

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

答案 3 :(得分:0)

您可以执行更改表名的存储过程,将表名作为变量传递。然后将存储的proc导入EF4。

CREATE PROCEDURE ChangeTableName
    @TableName varchar(200)
AS
BEGIN
    SET NOCOUNT ON;
    EXEC sp_rename "User", @TableName
END
GO

答案 4 :(得分:0)

在模型浏览器或设计图面中,右键单击实体并选择属性。在属性窗口中,编辑“实体集名称”字段。

这对我有用,但我先设计架构然后生成数据库。

答案 5 :(得分:0)

因为我首先创建了我的数据库,所以我做了以下事情:

  1. 备份* .edmx文件。
  2. 更改了我的数据库表名。
  3. 按照您的建议重新命名属性中的实体集名称。
  4. 然后我通过右键单击实体来更新基于我的数据库的模型。
  5. 我注意到* .edmx文件丢失了一半的行,所以我用我的备份覆盖* .edmx文件,在记事本中打开它,并用我的新表名替换了所有旧表名。
  6. 重建了MVC应用程序,经过测试,并且运行良好。
  7.   

    注意:是否需要以上所有这些步骤我不知道,只是   我尝试了什么,它对我有用。