2013-10-15 53 views
20

我正在使用實體框架5並執行簡單的查詢以從表中獲取一些用戶。無效的對象名稱'dbo.EdmMetadata'和'dbo .__ MigrationHistory'

SQL數據庫已經創建好了,所以我用我的實體作爲映射我的東西的方法。

當我運行我的查詢我檢測到其他查詢被處決,其中2例錯誤:

查詢1

ERROR: Invalid object name 'dbo.__MigrationHistory'.

SELECT 
[GroupBy1].[A1] AS [C1] 
FROM ( 
    SELECT 
     COUNT(1) AS [A1] 
    FROM [dbo].[__MigrationHistory] AS [Extent1] 
) AS [GroupBy1] 

QUERY 2

ERROR: Invalid object name '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表,因爲數據庫已經存在。

如何解決這個問題?

回答

45

由於數據庫已經存在,因此您不會有dbo.EdmMetadatadbo.__MigrationHistory哪些codefirst期望。爲了解決這個問題,你可以嘗試設置SetInitializer爲空。

static NameOfYourContext() 
{ 
    Database.SetInitializer<NameOfYourContext>(null);   
}  

您可以通過Scott Gu

2

在這篇文章的評論區看到有3個步驟,你需要遵循:

1-啓用包管理器遷移如果你還沒有沒有完成:

Enable-Migrations 

2-添加一個遷移,並確保使用-IgnoreChanges切換,你已經有一個現成的數據庫:

Add-Migration InitialModel -IgnoreChanges 

3-更新數據庫。這會自動爲您創建__MigrationHistory表。

Update-Database 
0

我禁用了我的例外設置。它忽略了這個例外,並繼續爲我自動創建這些表格