J'ai utilisé Entity Framework CTP avec Code-First comme dans this tutorial par Scott Guthrie et un autre par Scott Hanselman (ne peut pas poster le lien, mais google "Simple Code First" avec Entity Framework 4 - Magic Unicorn Feature CTP 4 "). Cela fonctionne parfaitement pour l'application MVC principale, mais j'essaie maintenant d'ajouter un projet de test, qui utilise une base de données SQL CE séparée.Code-Premier Entity Framework - erreur de création SQL CE DB
J'ai ajouté ce qui suit au fichier App.Config:
<connectionStrings>
<add name="MyData"
connectionString="Data Source=D:\myProject\myDb.sdf;"
providerName="System.Data.SqlServerCe.4.0" />
</connectionStrings>
Cependant lorsque je tente d'exécuter les tests qu'il jette l'erreur suivante en essayant de créer la base de données:
test méthode MyProjet.Tests.Administration.ModlelTests.Business.TestGetBusinessesList a jeté exception: System.Reflection.TargetInvocationException: exception a été levée par la cible d'une invocation. ---> System.TypeInitializationException: L'initialiseur de type pour 'System.Data.SqlServerCe.SqlCeProviderServices' a émis une exception. ---> System.Security.VerificationException: opération pourrait déstabiliser l'exécution .
avec la trace de pile suivant:
System.Data.SqlServerCe.SqlCeProviderServices..ctor() System.Data.SqlServerCe.SqlCeProviderServices..cctor() System.RuntimeFieldHandle. GetValue (champ RtFieldInfo , objet exemple, RuntimeType fieldType, RuntimeType DeclaringType, & booléenne domainInitialized) System.Reflection.RtFieldInfo.InternalGetValue (Object obj, Boolean doVisibilityCheck, booléenne doCheckConsistency) System.Reflection.RtFieldInfo.InternalGetValue (Object obj , Boolean doVisibilityCheck) System.Reflection.RtFieldInfo.GetValue (Object obj) System.Data.SqlServerCe.ExtensionMethods.SystemDataSqlServerCeSqlCeProviderServices_Instance_GetValue () System.Data.SqlServerCe.ExtensionMethods.SystemDataSqlServerCeSqlCeProviderServices_Instance() System.Data.SqlServerCe.SqlCeProviderFactory.System.IServiceProvider.GetService (type serviceType) System.Data.Common.DbProviderServices.GetProviderServices (usine DbProviderFactory ) système . Data.Comm on.DbProviderServices.GetProviderServices (connexion DbConnection ) de System.Data.Entity.ModelConfiguration.Internal.Configuration.CodeFirstCachedMetadataWorkspace.GetMetadataWorkspace (DbConnection de storeConnection) System.Data.Entity.Infrastructure.DbModel.CreateObjectContext [TContext] (DbConnection de ExistingConnection) System.Data.Entity.Internal.LazyInternalContext.InitializeFromModel (modèle DbModel ) System.Data.Entity.Internal.LazyInternalContext.InitializeContext() System.Data.Entity.Internal.InternalContext.Initialize() System.Data .Entity.Internal.InternalContext.GetEntitySetAndBaseTypeForType (Type entityType) System.Data.Entity.Internal.Linq.EfInternalQuery
1.Initialize() System.Data.Entity.Internal.Linq.EfInternalQuery
1.Include (String path ) System.Data.Entity.Infrastructure.DbQuery`1.Include (chemin cordes ) MyProjet.Areas .Administration.Models.BusinessModel.GetBusinesses() dans D: \ projects2010 \ MyProjet \ MyProjet \ Domaines \ administration \ Modèles \ BusinessModel.cs: ligne 47 MyProjet.Tests.Administration.ModlelTests.Business.TestGetBusinessesList() dans D: \ projects2010 \ MyProjet \ MyProjet.Tests \ Administration \ ModlelTests \ Business.cs: ligne 45
J'ai essayé de remplacer la chaîne de connexion MyData existante dans l'application MVC, et cela fonctionne très bien. Cela provoque uniquement ce problème lorsque cela est ajouté au projet Testing. De plus, le projet de test fonctionne sans problème lorsqu'il pointe vers une base de données SQL ou SQL Express.
Cela fait maintenant un moment que vous vous battez avec ça et vous n'arrivez pas à le comprendre. Je suis sûr que j'ai oublié quelque chose de simple.
'System.Security.VerificationException: l'opération risque de déstabiliser l'environnement d'exécution.» La plupart du temps, cela ne devrait jamais arriver. Cela pourrait être un bug dans le fournisseur. –
Salut Craig, Merci pour votre réponse - Je suppose que je vais juste devoir garder un œil sur les mises à jour. Je posterai si je trouve une solution dans le temps. –
Je suggère de déposer un rapport de connexion pour le bogue, même si le code de @ Jag fonctionne. –