entity-framework - 对于新的 EF 项目,EntityTypeConfiguration 和 DbMigration 有什么区别

标签 entity-framework entity-framework-5

我应该使用 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 呢?

这可能是一个过于开放的问题。

最佳答案

他们正在执行不同的工作 - EF 迁移确保应用程序和数据库更改保持一致。这些配置告知 EF 如何从对象模型映射到关系模型。

当默认约定不适合您的模型时,需要进行配置。

如果您希望对应用程序版本之间的代码中的数据库更改进行建模,则需要进行 EF 迁移。这样做的优点是能够在启动时自动让应用程序将数据库更新到最新版本。

关于entity-framework - 对于新的 EF 项目,EntityTypeConfiguration 和 DbMigration 有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17805394/

相关文章:

c# - Entity Framework ,获取子类的类型?

c# - 我应该如何设置我的集成测试以将测试数据库与 Entity Framework 一起使用?

c# - 启动/第一次查询非常慢

testing - 如何为我的 Web 应用程序编写测试?

c# - Entity Framework 5.0 - 1 对 1 关系无故为 NULL

entity-framework - 如何首先将新表添加到现有数据库代码中

entity-framework - IQueryable SQL 注入(inject)证明是否使用 Entity Framework ?

c# - Entity Framework 5 代码优先不创建数据库

entity-framework-5 - Entity Framework 迁移和播种特定更新

c# - 如何将导航属性名称更改为有意义的名称