我应该使用EntityTypeConfiguration
来构建我的数据模型,还是应该直接启用迁移,并使用DbMigration
。
即使用:
public class BlogEFCFConfiguration : EntityTypeConfiguration<Blog> {
public BlogEFCFConfiguration()
: base() {
HasKey(x => x.BlogId);
Property(x => x.BlogId).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);
Property(x => x.Name).HasColumnType("varchar").HasMaxLength(128);
}
}
或
public partial class InitialCreate : DbMigration {
public override void Up() {
CreateTable(
"dbo.Blogs",
c => new
{
BlogId = c.Int(nullable: false, identity: true),
Name = c.String(maxLength: 128, unicode: false),
})
.PrimaryKey(t => t.BlogId);
}
public override void Down() {
DropTable("dbo.Blogs");
}
}
的确,如果我想改变我的模型,我将不得不最终使用DbMigration
。那么为什么要使用EntityTypeConfiguration
?
这可能是一个太开放的问题。
答案 0 :(得分:4)
他们正在执行不同的工作 - EF迁移可确保应用程序和数据库更改保持一致。配置通知EF如何从对象模型映射到关系模型。
当默认约定不适合您的模型时,需要配置。
如果您希望在应用程序版本之间对代码中的数据库更改建模,则需要进行EF迁移。这样做的好处是能够自动让应用程序在启动时将数据库更新到最新版本。