首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >实体框架中的模型兼容性异常

实体框架中的模型兼容性异常
EN

Stack Overflow用户
提问于 2012-05-17 09:45:35
回答 3查看 11.1K关注 0票数 3

当我执行我的web应用程序并尝试将数据保存到数据库时,会发生以下异常:

无法检查

模型兼容性,因为数据库不包含模型元数据。只能检查使用代码优先或代码优先迁移创建的数据库的模型兼容性。

我尝试了很多问题来解决这个问题,但它仍然存在!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-05-17 11:11:28

如果要在本地机器上进行开发,那么使用迁移并不是必要的。您可以将数据库初始化器设置为始终删除数据库,运行一些与数据库交互的代码,然后您将看到数据库将被重新创建,错误将消失。

我就是这么做的。

票数 3
EN

Stack Overflow用户

发布于 2013-03-25 07:48:07

手动删除数据库,然后用以下方式重新启动项目:

代码语言:javascript
复制
public class DbDataContext : DbContext
{
    public IDbSet<FlightType> FlightTypes { get; set; }

    public DbDataContext()
    {
        //Validates if database Exists or if is CompatibleWithModel
        //Using when Databes is productive - use code first migrations for db changes in this case
        //Database.SetInitializer(new ValidateDatabase<DbDataContext>());

        //Custom Initializer - crates databse with required entries
        //Using while developing
        Database.SetInitializer<DbDataContext>(new DatabaseInitializer<DbDataContext>());
    }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
    }
}

DatabaseInitializer:

代码语言:javascript
复制
public class DatabaseInitializer<T> : DropCreateDatabaseIfModelChanges<DbDataContext>
{
    protected override void Seed(DbDataContext dbDataContext)
    {
        dbDataContext.FlightTypes.Add(new FlightType { FlightTypeNummer = "axd", Name = "AXD_LX", IsDefault = true });

        base.Seed(dbDataContext);
     }
 }

ValidateDatabase:

代码语言:javascript
复制
public class ValidateDatabase<TContext> : IDatabaseInitializer<TContext> where TContext : DbContext
{
    public void InitializeDatabase(TContext context)
    {
        if (!context.Database.Exists())
        {
            throw new InvalidOperationException("Database does not exist");
        }
        if (!context.Database.CompatibleWithModel(true))
        {
            throw new InvalidOperationException("The database is not compatible with the entity model.");
        }
    }
}
票数 2
EN

Stack Overflow用户

发布于 2012-05-17 09:49:45

你在尝试使用代码优先迁移吗?如果是,您是否在Package控制台中运行了以下命令?

代码语言:javascript
复制
PM> Enable-Migrations
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10633282

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档