无效的对象名称'dbo.EdmMetadata'和'dbo .__ MigrationHistory'

时间:2013-10-15 11:20:34

标签: entity-framework

我正在使用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.EdmMetadatadbo.__MigrationHistory表,因为数据库已经存在。

如何解决这个问题?

3 个答案:

答案 0 :(得分:52)

由于数据库已经存在,因此您不会有dbo.EdmMetadatadbo.__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)

我禁用了我的异常设置。它忽略了这个异常并继续为我自动创建这些表