2

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

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

4

1 回答 1

4

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

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

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

于 2013-07-23T08:46:28.793 回答