当我执行我的web应用程序并尝试将数据保存到数据库时,会发生以下异常:
无法检查
模型兼容性,因为数据库不包含模型元数据。只能检查使用代码优先或代码优先迁移创建的数据库的模型兼容性。
我尝试了很多问题来解决这个问题,但它仍然存在!
发布于 2012-05-17 11:11:28
如果要在本地机器上进行开发,那么使用迁移并不是必要的。您可以将数据库初始化器设置为始终删除数据库,运行一些与数据库交互的代码,然后您将看到数据库将被重新创建,错误将消失。
我就是这么做的。
发布于 2013-03-25 07:48:07
手动删除数据库,然后用以下方式重新启动项目:
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.");
}
}
}发布于 2012-05-17 09:49:45
你在尝试使用代码优先迁移吗?如果是,您是否在Package控制台中运行了以下命令?
PM> Enable-Migrationshttps://stackoverflow.com/questions/10633282
复制相似问题