C# 更改EF4中的db表名(实体框架4)
有人知道如何更改EF4(实体框架4)中实体的映射db表吗C# 更改EF4中的db表名(实体框架4),c#,.net,entity-framework,entity-framework-4,C#,.net,Entity Framework,Entity Framework 4,有人知道如何更改EF4(实体框架4)中实体的映射db表吗 稍后编辑:我想我已经在模型浏览器中找到了定义表名的位置。但是它们的名称是只读的,因此无法使用设计器编辑它们。此外,在xml模式中没有对表名的引用(根据我搜索的内容)。您可以执行一个存储过程来更改表名,并将表名作为变量传递。然后将存储的进程导入EF4 CREATE PROCEDURE ChangeTableName @TableName varchar(200) AS BEGIN SET NOCOUNT ON; EX
稍后编辑:我想我已经在模型浏览器中找到了定义表名的位置。但是它们的名称是只读的,因此无法使用设计器编辑它们。此外,在xml模式中没有对表名的引用(根据我搜索的内容)。您可以执行一个存储过程来更改表名,并将表名作为变量传递。然后将存储的进程导入EF4
CREATE PROCEDURE ChangeTableName
@TableName varchar(200)
AS
BEGIN
SET NOCOUNT ON;
EXEC sp_rename "User", @TableName
END
GO
如果只需要更改表的名称,可以:
李>
Table=“MyTableName”
属性<代码>希望这会有所帮助。我相信您所要求的是重新配置实体到表的映射。可以在实体上单击鼠标右键,然后选择“表映射”。这将向您显示映射表的实体。你可以在那里换桌子。但是,当您打开下拉列表时,您将只看到使用更新模型向导导入的表。如果未导入该表,则不会列出该表。然后可以将属性适当地映射到表的列名。另一种解决方案是重写
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"
}
}
公共类MyDbContext:DbContext
{
模型创建时受保护的覆盖无效(DbModelBuilder modelBuilder)
{
modelBuilder.Entity().ToTable(“DB_PRODUCTS_TBL”);
//否则,EF假定该表称为“产品”
}
}
在模型浏览器或设计图面中,在图元上单击鼠标右键,然后选择“特性”。在“属性”窗口中,编辑“实体集名称”字段
这对我来说很有效,但是我先设计模式,然后生成数据库。因为我先创建了数据库,所以我做了以下工作:
但我看不出导入存储过程将如何更新模式。我想我没有弄清楚我想要实现什么,我试图更改ef模式映射到的表,例如,现在它从数据库中的表x检索数据,我希望它现在从表y检索数据,两个表都存在于数据库中,都具有完全相同的结构。我不能简单地将数据从一个表导入另一个表的原因是,一个表被一些无法修改的应用程序使用,并且所有应用程序都需要访问相同的数据。谢谢你的回复,我知道问题出在哪里了。需要在重命名表后动态更新EF模式。这可能适用于小型本地项目,但在企业环境中,这是完全不可接受的。谁知道是什么影响了这些表名。这种方法的问题是每次重新生成db映射时都必须更改它。这不是Zacho提到的实用方法。