Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Entity framework 指定的表不存在。[u迁移历史记录]_Entity Framework_Ef Code First_Sql Server Ce_Entity Framework 4.3_Entity Framework Migrations - Fatal编程技术网

Entity framework 指定的表不存在。[u迁移历史记录]

Entity framework 指定的表不存在。[u迁移历史记录],entity-framework,ef-code-first,sql-server-ce,entity-framework-4.3,entity-framework-migrations,Entity Framework,Ef Code First,Sql Server Ce,Entity Framework 4.3,Entity Framework Migrations,自从实体框架代码首次可用以来,我一直在使用以下方法: public virtual void CreateDatabase() { var dbContext = _dbContextLocator.Current; dbContext.Database.Delete(); dbContext.Database.Create(); dbContext.Database.Initialize(true); } 最近,我注意到,当点击dbContext.Databa

自从实体框架代码首次可用以来,我一直在使用以下方法:

public virtual void CreateDatabase()
{
    var dbContext = _dbContextLocator.Current;
    dbContext.Database.Delete();
    dbContext.Database.Create();
    dbContext.Database.Initialize(true);
}
最近,我注意到,当点击
dbContext.Database.Create()
时,出现以下异常:

System.Data.SqlServerCe.SqlCeException发生异常
Message=指定的表不存在。[\uu迁移历史记录]
Source=SQL Server Compact ADO.NET数据提供程序
错误代码=-2147467259
HResult=-2147217865
NativeError=0
StackTrace:at System.Data.SqlServerCe.SqlCeCommand.ProcessResults(Int32 hr)
内部异常:

如果我转到Debug-Exceptions并检查抛出的“公共语言运行时异常”,这会导致执行停止,我得到上面的异常。如果取消选中,则数据库似乎已正确创建,但在我的输出窗口中会重复四次以下错误语句:

System.Data.SqlServerCe.dll中首次出现类型为“System.Data.SqlServerCe.SqlCeException”的异常
System.Data.SqlServerCe.dll中首次出现类型为“System.Data.SqlServerCe.SqlCeException”的异常
System.Data.SqlServerCe.Entity.dll中首次出现类型为“System.Data.SqlServerCe.SqlCeException”的异常
System.Data.Entity.dll中首次出现类型为“System.Data.EntityCommandExecutionException”的异常
System.Data.Entity.dll中首次出现类型为“System.Data.EntityCommandExecutionException”的异常
System.Data.Entity.dll中发生了类型为“System.Data.EntityCommandExecutionException”的首次意外异常

dbContext.Database.Create()
周围放置try/catch块无效

我的目标是创建一个完全空白的数据库,然后手动填充数据。我不希望使用Entity Framework的新迁移功能

我能做些什么来消除第一次机会例外

我的目标是创建一个完全空白的数据库

假设您指的是一个包含模型所需的实际模式对象的数据库

如果是,您有两个选择:

1) 忽略异常-对于SqlCE,EF在创建数据库时在内部使用迁移管道。例外情况是迁移如何确定u MigrationHistory表存在的实现细节


2) 使用遗留API—ObjectContext上的数据库创建API使用遗留的非迁移代码路径。将DbContext强制转换为IObjectContextAdapter以获取ObjectContext引用。

我注意到您使用的是compact edition-是否检查以确保DB具有_MigrationHistory表?我确实看到它试图删除表,但即使它最近删除了数据库,您也可能会遇到一些奇怪的情况-我最近记录了我在CE中丢失_MigrationHistory表的经历。它还显示了执行的sql,以及我是如何使其再次工作的。我不太确定数据库是什么。delete与CE一起工作,您可能想检查它是否实际工作,文件是否被删除?@LukeMcGregor,问得好,但我刚刚检查了,它确实删除了数据库。谢谢您的回答,Andrew+1.您认为这可以被认为是实体框架中的一个bug吗?似乎在创建新数据库时不应该生成错误。不,这只是我们如何确定历史表存在的一个有点不幸的副作用。正如您所观察到的,我们正在捕获并接受这些异常。