当我执行我的网络应用程序并尝试将数据保存到数据库中时,会发生此异常:
无法检查模型兼容性,因为数据库不包含模型元数据。只能检查使用 Code First 或 Code First 迁移创建的数据库的模型兼容性。
我尝试了很多问题来解决这个问题,但它仍然存在!
当我执行我的网络应用程序并尝试将数据保存到数据库中时,会发生此异常:
无法检查模型兼容性,因为数据库不包含模型元数据。只能检查使用 Code First 或 Code First 迁移创建的数据库的模型兼容性。
我尝试了很多问题来解决这个问题,但它仍然存在!
如果您在本地机器上开发,则不需要使用迁移。您只需将数据库初始化程序设置为始终删除数据库,运行一些与数据库交互的代码,然后您将看到数据库将被重新创建并且错误将消失。
应该可以,我就是这么干的。
手动删除数据库,然后使用以下命令重新启动项目:
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>();
}
}
数据库初始化器:
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);
}
}
验证数据库:
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.");
}
}
}
您是否尝试使用代码优先迁移?如果是这样,您是否在包管理器控制台中运行了以下命令?
PM> Enable-Migrations