2012-12-13 4 views
0

Je suis un tutoriel d'utilisation d'azure avec asp.net avec une base de données sql, et j'ai du mal à essayer de corriger une erreur que je reçois. le tutoriel que je suis est - "http://www.windowsazure.com/en-us/develop/net/tutorials/web-site-with-sql-database/#aspnetwindowsazureinfo"Windows Azure erreur de migration

dans la console du gestionnaire de paquets J'ai tapé "enable-migrations -ContextTypeName ToDoListApp.Models.ToDoDb" et cela a fonctionné correctement, comme indiqué ci-dessous avec ma sortie.

Checking if the context targets an existing database... 
Code First Migrations enabled for project ToDoListApp. 

Je puis tapé « ajouter la migration initiale » et je l'ai reçu cette erreur ..

« Impossible échafaudage la prochaine migration, car la base de données cible a été créé avec une version du premier code plus tôt que EF Pour commencer à utiliser les migrations sur cette base de données, vérifiez que le modèle actuel est compatible avec la base de données cible et exécutez le processus de mise à jour des migrations (dans Visual Studio, vous pouvez utiliser la commande Update-Database du gestionnaire de packages). Console pour exécuter le processus de mise à jour des migrations). "

J'ai également utilisé la commande "-Verbose" - et découvert que l'erreur est dans la base de données cible.

Using StartUp project 'ToDoListApp'. 
Using NuGet project 'ToDoListApp'. 
Target database is: 'ToDoListApp.Models.ToDoDb' (DataSource: .\SQLEXPRESS, Provider: System.Data.SqlClient, Origin: Convention). 
  • Note: * i ai mis en place un site Web sur d'azur, ainsi que la base de données SQL et liée à ce projet en publiant.

J'ai tapé l'erreur dans Google, certains disent que "Add-migration InitialMigration -IgnoreChanges" qui peut le fixer, de

« http://www.woohoo.uk.com/Blog/updating -entity-framework-4-1-avec-code-premier-migrations "

et d'autres disent simplement mettre à jour-base de données dans la console du gestionnaire de paquets, qui ne semblent pas fonctionner, je suis un tutoriel fourni par Microsoft, et le long du chemin j'ai reçu ce problème.

toute aide pour résoudre cette situation serait reconnaissante, im utilisant Visual Studio 2012, C# asp.net mv3 cadre 4.5.

dans mon fichier web.config, j'ai entré le code

<entityFramework> 
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" /> 
    <contexts> 
     <context type="ToDoListApp.Models.ToDoDb, ToDoListApp"> 
     <databaseInitializer type="System.Data.Entity.MigrateDatabaseToLatestVersion"> 
     <parameters> 
      <parameter value="ToDoDb_DatabasePublish"/> 
     </parameters> 
     </databaseInitializer> 
     </context> 
    </contexts> 
    </entityFramework> 

i tapai "Add-migration InitialMigration -IgnoreChanges"

et l'erreur .. était délivrée

System.InvalidOperationException: Failed to set database initializer of type     'System.Data.Entity.MigrateDatabaseToLatestVersion' for DbContext type 'ToDoListApp.Models.ToDoDb, ToDoListApp' specified in the application configuration. See inner exception for details. ---> System.TypeLoadException: Could not load type 'System.Data.Entity.MigrateDatabaseToLatestVersion' from assembly 'EntityFramework, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'. 
    at System.RuntimeTypeHandle.GetTypeByName(String name, Boolean throwOnError, Boolean ignoreCase, Boolean reflectionOnly, StackCrawlMarkHandle stackMark, IntPtr pPrivHostBinder, Boolean loadTypeFromPartialName, ObjectHandleOnStack type) 
    at System.RuntimeTypeHandle.GetTypeByName(String name, Boolean throwOnError, Boolean ignoreCase, Boolean reflectionOnly, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean loadTypeFromPartialName) 
    at System.RuntimeType.GetType(String typeName, Boolean throwOnError, Boolean ignoreCase, Boolean reflectionOnly, StackCrawlMark& stackMark) 
    at System.Type.GetType(String typeName, Boolean throwOnError) 
    at System.Data.Entity.Internal.ConfigFile.DatabaseInitializerElement.GetInitializerType() 
    at System.Data.Entity.Internal.AppConfig.InternalApplyInitializers(Boolean force) 
    --- End of inner exception stack trace --- 
    at System.Data.Entity.Internal.AppConfig.InternalApplyInitializers(Boolean force) 
    at System.Data.Entity.Internal.InternalContext.PerformDatabaseInitialization() 
    at System.Data.Entity.Internal.LazyInternalContext.<InitializeDatabase>b__4(InternalContext c) 
    at System.Data.Entity.Internal.RetryAction`1.PerformAction(TInput input) 
    at System.Data.Entity.Internal.LazyInternalContext.InitializeDatabaseAction(Action`1 action) 
    at System.Data.Entity.Internal.LazyInternalContext.InitializeDatabase() 
    at System.Data.Entity.Internal.InternalContext.GetEntitySetAndBaseTypeForType(Type entityType) 
    at System.Data.Entity.Internal.Linq.InternalSet`1.Initialize() 
    at System.Data.Entity.Internal.Linq.InternalSet`1.get_InternalContext() 
    at System.Data.Entity.Infrastructure.DbQuery`1.System.Linq.IQueryable.get_Provider() 
    at System.Linq.Queryable.Count[TSource](IQueryable`1 source) 
    at System.Data.Entity.Migrations.History.HistoryRepository.Exists[TContext](HistoryContextBase`1 context) 
    at System.Data.Entity.Migrations.History.HistoryRepository.GetPendingMigrations(IEnumerable`1 localMigrations) 
    at System.Data.Entity.Migrations.DbMigrator.GetPendingMigrations() 
    at System.Data.Entity.Migrations.Infrastructure.MigratorBase.GetPendingMigrations() 
    at System.Data.Entity.Migrations.Design.ToolingFacade.GetPendingMigrationsRunner.RunCore() 
    at System.Data.Entity.Migrations.Design.ToolingFacade.BaseRunner.Run() 
Failed to set database initializer of type 'System.Data.Entity.MigrateDatabaseToLatestVersion' for DbContext type 'ToDoListApp.Models.ToDoDb, ToDoListApp' specified in the application configuration. See inner exception for details. 

Répondre

1

corrigé -

juste nécessaire pour me connecter au serveur sql object ex plorer et supprimer le EdmMetadata sous des tables, et entrez ma chaîne de connexion dans web.config, voici un exemple si quelqu'un a déjà lu cela et a eu le même problème ..

<add name="DefaultConnection" connectionString="server=tcp:* insert server name*.database.windows.net,1433;Database=* insert database name *;User ID=*insert username *@* insert server name*;Password={*insert password here *};Trusted_Connection=False;Encrypt=True;Connection Timeout=30;" /> 
Questions connexes