我想先更改使用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; }
...
答案 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>();
}