在EF4中更改db表名称(entity framework4)

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

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

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

  1. 使用XML Editor打开EDMX文件。
  2. 在其中找到SSDL部分。
  3. 找到实体集元素,例如
  4. 添加Table="MyTableName"属性。

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

希望有所帮助。

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

 public class MyDbContext : DbContext { protected override void OnModelCreating(DbModelBuilder modelBuilder) { modelBuilder.Entity().ToTable("DB_PRODUCTS_TBL"); // otherwise EF assumes the table is called "Products" } } 

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

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

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

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

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

注意 :是否需要上述所有这些步骤我不知道,这正是我尝试过的,它对我有用。

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

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