0
votes

I've used EF code first to create a DB. Works great in dev. I copy it to a windows server 2003 box and I get these errors (listed below)

EF 5, .NET 4.0.

I've uninstalled and reinstalled the .net 4 framework. as well as tested on other machines.

On my Windows Server 2008 box it works fine. On another 2003 box it does not.

To take MVC out of the equation, i built a simple console app that lists out some data from the db. - Same error there.

I had written everything in VS 2012 with .net 4.5 installed on the machine. I read that could cause an issue, so I re-wrote everything in VS 2010 targeting .net 4, and manually added the reference to the EF 5/.net4 dll. Same thing, works great on my 2 dev machines, and on the 2008 server, but not 2003.

Error:

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.

Here's the stack trace (It's a MVC app)

[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.]
   System.Data.Metadata.Edm.Loader.ThrowOnNonWarningErrors() +8508793
   System.Data.Metadata.Edm.Loader.LoadItems(IEnumerable`1 xmlReaders, IEnumerable`1 sourceFilePaths) +181
   System.Data.Metadata.Edm.StoreItemCollection.Init(IEnumerable`1 xmlReaders, IEnumerable`1 filePaths, Boolean throwOnError, DbProviderManifest& providerManifest, DbProviderFactory& providerFactory, String& providerManifestToken, Memoizer`2& cachedCTypeFunction) +211
   System.Data.Metadata.Edm.StoreItemCollection..ctor(IEnumerable`1 xmlReaders) +295
   System.Data.Entity.Migrations.Extensions.XDocumentExtensions.GetStoreItemCollection(XDocument model, DbProviderInfo& providerInfo) +180
   System.Data.Entity.Migrations.Infrastructure.EdmModelDiffer.Diff(XDocument sourceModel, XDocument targetModel, String connectionString) +48
   System.Data.Entity.Internal.InternalContext.ModelMatches(XDocument model) +45
   System.Data.Entity.Internal.ModelCompatibilityChecker.CompatibleWithModel(InternalContext internalContext, ModelHashCalculator modelHashCalculator, Boolean throwIfNoMetadata) +65
   System.Data.Entity.Internal.InternalContext.CompatibleWithModel(Boolean throwIfNoMetadata) +52
   System.Data.Entity.CreateDatabaseIfNotExists`1.InitializeDatabase(TContext context) +239
   System.Data.Entity.Internal.c__DisplayClass8.b__6() +19
   System.Data.Entity.Internal.InternalContext.PerformInitializationAction(Action action) +72

[DataException: An exception occurred while initializing the database. See the InnerException for details.]
   System.Data.Entity.Internal.InternalContext.PerformInitializationAction(Action action) +117
   System.Data.Entity.Internal.InternalContext.PerformDatabaseInitialization() +186
   System.Data.Entity.Internal.LazyInternalContext.b__4(InternalContext c) +7
   System.Data.Entity.Internal.RetryAction`1.PerformAction(TInput input) +118
   System.Data.Entity.Internal.LazyInternalContext.InitializeDatabaseAction(Action`1 action) +190
   System.Data.Entity.Internal.LazyInternalContext.InitializeDatabase() +73
   System.Data.Entity.Internal.InternalContext.GetEntitySetAndBaseTypeForType(Type entityType) +28
   System.Data.Entity.Internal.Linq.InternalSet`1.Initialize() +56
   System.Data.Entity.Internal.Linq.InternalSet`1.GetEnumerator() +15
   System.Data.Entity.Infrastructure.DbQuery`1.System.Collections.Generic.IEnumerable.GetEnumerator() +40
   System.Collections.Generic.List`1..ctor(IEnumerable`1 collection) +315
   System.Linq.Enumerable.ToList(IEnumerable`1 source) +58
   Kiosk.Controllers.KioskEventController.Index() in c:\Dev\hbkiosk\Kiosk\Controllers\KioskEventController.cs:23
   lambda_method(Closure , ControllerBase , Object[] ) +62
   System.Web.Mvc.ActionMethodDispatcher.Execute(ControllerBase controller, Object[] parameters) +17
   System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters) +188
   System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters) +27
   System.Web.Mvc.Async.c__DisplayClass42.b__41() +28
   System.Web.Mvc.Async.c__DisplayClass8`1.b__7(IAsyncResult _) +12
   System.Web.Mvc.Async.WrappedAsyncResult`1.End() +50
   System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethod(IAsyncResult asyncResult) +29
   System.Web.Mvc.Async.c__DisplayClass39.b__33() +59
   System.Web.Mvc.Async.c__DisplayClass4f.b__49() +240
   System.Web.Mvc.Async.c__DisplayClass37.b__36(IAsyncResult asyncResult) +12
   System.Web.Mvc.Async.WrappedAsyncResult`1.End() +50
   System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethodWithFilters(IAsyncResult asyncResult) +31
   System.Web.Mvc.Async.c__DisplayClass2a.b__20() +23
   System.Web.Mvc.Async.c__DisplayClass25.b__22(IAsyncResult asyncResult) +128
   System.Web.Mvc.Async.WrappedAsyncResult`1.End() +50
   System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeAction(IAsyncResult asyncResult) +26
   System.Web.Mvc.c__DisplayClass1d.b__18(IAsyncResult asyncResult) +14
   System.Web.Mvc.Async.c__DisplayClass4.b__3(IAsyncResult ar) +25
   System.Web.Mvc.Async.WrappedAsyncResult`1.End() +55
   System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult) +41
   System.Web.Mvc.Async.c__DisplayClass4.b__3(IAsyncResult ar) +25
   System.Web.Mvc.Async.WrappedAsyncResult`1.End() +55
   System.Web.Mvc.Controller.EndExecute(IAsyncResult asyncResult) +28
   System.Web.Mvc.Controller.System.Web.Mvc.Async.IAsyncController.EndExecute(IAsyncResult asyncResult) +10
   System.Web.Mvc.c__DisplayClass8.b__3(IAsyncResult asyncResult) +28
   System.Web.Mvc.Async.c__DisplayClass4.b__3(IAsyncResult ar) +25
   System.Web.Mvc.Async.WrappedAsyncResult`1.End() +55
   System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult) +30
   System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.EndProcessRequest(IAsyncResult result) +9
   System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +8836913
   System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +184

2
Can you check the file version of entityframework.dll you are referencing? The NuGet package contains two versions: 4.4 for .NET 4 and 5.0 for .NET 4.5 - Andriy Svyryd
It's 4.4. VS 2012 wanted to use 5 even after changing the target framework and uninst/reinst the nuget package, so i removed the reference and manually added the reference to the 4.4 dll. Verified that the output directory contained the 4.4 dll and the project still ran properly. - Zeph
Try putting this attribute on your context class: [DbModelBuilderVersion(DbModelBuilderVersion.V4_1)] - Andriy Svyryd
This resulted in the same error, HOWEVER - I ended up dropping/rebuilding the database and am now good. Maybe there is EF specific meta-data stored in the database? - Zeph
Yes, EF stores your current model in the database so it can detect if it changed. - Andriy Svyryd

2 Answers

3
votes

I was able to fix this by changing my connection string to have ef create the db fresh with the proper dll installed on the project. I then migrated the data from the old db to the new one.

My assumption is that the EF 5 code stored some meta data in the DB (although i couldn't verify this). Since EF code first will create the db/schema if the database doesn't exist, I simply changed my connection string to a non-existant database, ran the project and let EF build the db, then migrated the existing data from the DB created by V.5 to the db created by v.4.

0
votes

I updated .NET Framework to 4.5 and it worked.