2013-01-03 86 views
0

我只是想從EF 4.3升級到EF在.NET 4.0遷移的EF 5否則從EF升級後4.3

5,而當我運行使用update-database的遷移,我得到這個:

System.Data.MetadataException: Schema specified is not valid. Errors: 
(0,0) : warning 0005: Could not find schema information for the attribute 'Namespace'. 
(0,0) : warning 0005: Could not find schema information for the attribute 'Provider'. 
(0,0) : warning 0005: Could not find schema information for the attribute 'ProviderManifestToken'. 
(0,0) : warning 0005: Could not find schema information for the attribute 'Alias'. 
(0,0) : error 0010: The element Schema in namespace http://schemas.microsoft.com/ado/2009/11/edm/ssdl was unexpected for the root element. The expected Schema in one of the following namespaces: http://schemas.microsoft.com/ado/2006/04/edm/ssdl, http://schemas.microsoft.com/ado/2009/02/edm/ssdl. 
    at System.Data.Metadata.Edm.StoreItemCollection.Loader.ThrowOnNonWarningErrors() 
    at System.Data.Metadata.Edm.StoreItemCollection.Loader.LoadItems(IEnumerable`1 xmlReaders, IEnumerable`1 sourceFilePaths) 
    at System.Data.Metadata.Edm.StoreItemCollection.Init(IEnumerable`1 xmlReaders, IEnumerable`1 filePaths, Boolean throwOnError, DbProviderManifest& providerManifest, DbProviderFactory& providerFactory, String& providerManifestToken, Memoizer`2& cachedCTypeFunction) 
    at System.Data.Metadata.Edm.StoreItemCollection..ctor(IEnumerable`1 xmlReaders) 
    at System.Data.Entity.Migrations.Extensions.XDocumentExtensions.GetStoreItemCollection(XDocument model, DbProviderInfo& providerInfo) 
    at System.Data.Entity.Migrations.Infrastructure.EdmModelDiffer.Diff(XDocument sourceModel, XDocument targetModel, String connectionString) 
    at System.Data.Entity.Migrations.DbMigrator.IsModelOutOfDate(XDocument model, DbMigration lastMigration) 
    at System.Data.Entity.Migrations.DbMigrator.Upgrade(IEnumerable`1 pendingMigrations, String targetMigrationId, String lastMigrationId) 
    at System.Data.Entity.Migrations.Infrastructure.MigratorLoggingDecorator.Upgrade(IEnumerable`1 pendingMigrations, String targetMigrationId, String lastMigrationId) 
    at System.Data.Entity.Migrations.DbMigrator.Update(String targetMigration) 
    at System.Data.Entity.Migrations.Infrastructure.MigratorBase.Update(String targetMigration) 
    at System.Data.Entity.Migrations.Design.ToolingFacade.UpdateRunner.RunCore() 
    at System.Data.Entity.Migrations.Design.ToolingFacade.BaseRunner.Run() 
Schema specified is not valid. Errors: 
(0,0) : warning 0005: Could not find schema information for the attribute 'Namespace'. 
(0,0) : warning 0005: Could not find schema information for the attribute 'Provider'. 
(0,0) : warning 0005: Could not find schema information for the attribute 'ProviderManifestToken'. 
(0,0) : warning 0005: Could not find schema information for the attribute 'Alias'. 
(0,0) : error 0010: The element Schema in namespace http://schemas.microsoft.com/ado/2009/11/edm/ssdl was unexpected for the root element. The expected Schema in one of the following namespaces: http://schemas.microsoft.com/ado/2006/04/edm/ssdl, http://schemas.microsoft.com/ado/2009/02/edm/ssdl. 

任何方式來獲得通過這個雖然在.NET 4.0?我知道EF 5的某些功能在.Net 4上不可用。但我無法升級到.Net 4.5或VS 2012,因爲我的SSD只有60GB,目前它只有4 GB的空閒空間,所以VS2012安裝程序獲勝不要讓我安裝(即使在其他驅動器上)。

Web.config中有參照此一:

<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=4.4.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" /> 
+0

該項目的web.config是什麼樣子的? – IronMan84

+0

此處的問題是,要加載的模型位於v3架構中,而.NET Framework 4中的EF組件只能理解v2架構。你是如何安裝EF5的?什麼是您使用的EntityFramework.dll的版本(我假設它是5.0.0.0,而.NET Framework 4上的EF5 EntityFramework.dll版本應該是4.4.0.0) – Pawel

+0

@Pawel:你說得對,它是4.4。我更新了這篇文章。我通過nuget安裝它。此外,它會在第一次加載時拋出錯誤,如果我刷新頁面,它會正常工作。但是當我再次刷新頁面時,應用程序會永久掛起,我必須執行iisreset,然後循環再次重複:)。很煩人! – TCM

回答

1

看來,存儲在數據庫中的模型具有V3架構,而你使用的是.NET Framework 4的更新數據庫。 .NET Framework 4中的EF組件不理解v3(僅v2)架構,因此錯誤。我相信你需要遷移到.NET Framework 4.5和VS2012。