我正在使用Entity Framework 5并进行简单查询以从表中获取一些用户。
已经创建了SQL数据库,因此我使用我的实体来映射我拥有的内容。
当我运行查询时,我检测到其他查询已执行,其中2个有错误:
QUERY 1
错误:无效的对象名称'dbo .__ MigrationHistory'。
SELECT
[GroupBy1].[A1] AS [C1]
FROM (
SELECT
COUNT(1) AS [A1]
FROM [dbo].[__MigrationHistory] AS [Extent1]
) AS [GroupBy1]
QUERY 2
错误:无效的对象名称'dbo.EdmMetadata'。
SELECT TOP (1)
[Extent1].[Id] AS [Id],
[Extent1].[ModelHash] AS [ModelHash]
FROM [dbo].[EdmMetadata] AS [Extent1]
ORDER BY [Extent1].[Id] DESC
为什么?
我的数据库中没有dbo.EdmMetadata
和dbo.__MigrationHistory
表,因为数据库已经存在。
如何解决这个问题?
答案 0 :(得分:52)
由于数据库已经存在,因此您不会有dbo.EdmMetadata
和dbo.__MigrationHistory
代码首选。要解决此问题,您可以尝试将SetInitializer
设置为null。
static NameOfYourContext()
{
Database.SetInitializer<NameOfYourContext>(null);
}
您可以在Scott Gu
的帖子的评论部分看到这一点答案 1 :(得分:1)
您需要遵循3个步骤:
1-如果您尚未完成,请在软件包管理器中启用迁移:
Enable-Migrations
2-添加迁移并确保使用-IgnoreChanges开关,因为您已有现有数据库:
Add-Migration InitialModel -IgnoreChanges
3-更新数据库。这将自动为您创建__MigrationHistory表。
Update-Database
答案 2 :(得分:-1)
我禁用了我的异常设置。它忽略了这个异常并继续为我自动创建这些表