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