有谁知道如何在EF4(实体框架4)中更改实体的映射数据库表?
稍后编辑:我想我已经在模型浏览器中找到了定义表名的位置。但他们的名字是只读的,所以不可能使用设计师编辑它们。此外,没有引用(从我搜索到的内容)到xml架构中的表名。
答案 0 :(得分:21)
如果您只需要更改表格的名称,您可以:
<EntitySet Name="Customers" EntityType="ExampleModel.Store.Customers" Schema="dbo" />
。 Table="MyTableName"
属性。 <EntitySet Name="Customers" EntityType="ExampleModel.Store.Customers" Schema="dbo" Table="MyTableName" />
这是一个完整的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)
因为我首先创建了我的数据库,所以我做了以下事情:
注意:是否需要以上所有这些步骤我不知道,只是 我尝试了什么,它对我有用。