实体框架代码优先 - 更改表名称

时间:2014-02-09 07:45:03

标签: c# .net entity-framework

我想先更改使用Entity Framework代码生成的某个表的名称。

我已经创建了数据库,但现在我想更改名称。我已在项目中将"Metadatas"表的所有引用更新为"Metadata"。但是在数据库中生成的表仍然是“Metadatas”。我已经删除并重新创建了数据库,但这似乎也没有用。也没有使用TableAttribute。我应该做什么?

感谢。

[Table("Metadata")]
public class Metadata 
{
    [Required, Key]
    public int MetadataId { get; set; }

    [Required, ScaffoldColumn(false)]
    public int DocumentId { get; set; }

    [Required, StringLength(250), DataType(DataType.Text)]
    public string Title { get; set; }

...

1 个答案:

答案 0 :(得分:43)

这里有两个选项 -

数据注释:

//Changing database table name to Metadata
[Table("Metadata")]
public class Metadata 
{
  [Required, Key]
  public int MetadataId { get; set; }

  [Required, ScaffoldColumn(false)]
  public int DocumentId { get; set; }

  [Required, StringLength(250), DataType(DataType.Text)]
  public string Title { get; set; 
}

或我们有流利的Api:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
  //Changing Database table name to Metadata
  modelBuilder.Entity<Metadata>()
      .ToTable("Metadata");
}

如果您想确保您的域模型保持整洁,则使用Fluent Api是首选选项。

只是添加到此,如果您只想删除表名的复数,您可以使用以下代码行覆盖EF的功能:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
}