使用 EF 时,如果在数据库创建后再修改模型或配置,运行就会报错。

    最暴力的解决方法是手动删除数据库或设置 Database.SetInitializer(new DropCreateDatabaseIfModelChanges<XXXContext>()); ,但这些方法仅适合学习时使用

    也可以使用 EF Code First DB Migration 在修改实体类后,更新数据库。不过 DB Migration 用起来比较麻烦。

    推荐的一种做法是在项目初期把主要的类使用 EF 自动生成表,然后检查自动生成的表是否满足需求,不满足就修改表或配置再生成,最后干掉 _MigrationHistory,并禁用自动生成表。

    1. public MyContext() : base("name=xxx")
    2. {
    3. Database.SetInitializer<MyContext>(null);
    4. }

    以后对数据库表的修改都手动完成,也就是手动改实体类、手动改数据库表。