7

Ich habe versucht, dieses Tutorial zu folgen ... http://www.asp.net/mvc/tutorials/getting-started-with-ef-using-mvc/creating-an-entity-framework-data-model-for-an-asp-net-mvc-application aber ich erhalte die folgende Fehlermeldung ...Fehler beim Laden der Datenbank initializer mit EF6

System.InvalidOperationException = { "Fehler Datenbank initializer von einstellen Typ 'WeddingPreparations.Dal.WeddingInitializer, KevinLisaWedding' für DbContext Typ 'WeddingPreparations.Dal.WeddingContext' in der Konfigurationsanwendung angegeben. Siehe innere Ausnahme für weitere Details. "}

Die innere Ausnahme ist ...

{ "konnte nicht geladen werden Typ 'WeddingPreparations.Dal.WeddingContext' von Assembly 'EntityFramework, Version = 6.0.0.0, Culture = neutral, PublicKeyToken = b77a5c561934e089'." : „WeddingPreparations.Dal.WeddingContext“}

Die Stack-Trace ist ...

at System.Data.Entity.Internal.InitializerConfig.TryGetInitializer(Type requiredContextType, String contextTypeName, String initializerTypeName, Boolean isDisabled, Func`1 initializerArgs, Func`3 exceptionMessage) 
    at System.Data.Entity.Internal.InitializerConfig.<>c__DisplayClass6.<TryGetInitializerFromEntityFrameworkSection>b__1(ContextElement e) 
    at System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext() 
    at System.Linq.Enumerable.FirstOrDefault[TSource](IEnumerable`1 source, Func`2 predicate) 
    at System.Data.Entity.Internal.InitializerConfig.TryGetInitializerFromEntityFrameworkSection(Type contextType) 
    at System.Data.Entity.Internal.InitializerConfig.TryGetInitializer(Type contextType) 
    at System.Data.Entity.Infrastructure.DependencyResolution.AppConfigDependencyResolver.GetServiceFactory(Type type, String name) 
    at System.Data.Entity.Infrastructure.DependencyResolution.AppConfigDependencyResolver.<>c__DisplayClass1.<GetService>b__0(Tuple`2 t) 
    at System.Collections.Concurrent.ConcurrentDictionary`2.GetOrAdd(TKey key, Func`2 valueFactory) 
    at System.Data.Entity.Infrastructure.DependencyResolution.AppConfigDependencyResolver.GetService(Type type, Object key) 
    at System.Data.Entity.Infrastructure.DependencyResolution.ResolverChain.<>c__DisplayClass3.<GetService>b__0(IDbDependencyResolver r) 
    at System.Linq.Enumerable.WhereSelectArrayIterator`2.MoveNext() 
    at System.Linq.Enumerable.FirstOrDefault[TSource](IEnumerable`1 source, Func`2 predicate) 
    at System.Data.Entity.Infrastructure.DependencyResolution.ResolverChain.GetService(Type type, Object key) 
    at System.Data.Entity.Infrastructure.DependencyResolution.CompositeResolver`2.GetService(Type type, Object key) 
    at System.Data.Entity.Infrastructure.DependencyResolution.DbDependencyResolverExtensions.GetService(IDbDependencyResolver resolver, Type type) 
    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.Initialize() 
    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.GetEnumerator() 
    at System.Data.Entity.Infrastructure.DbQuery`1.System.Collections.Generic.IEnumerable<TResult>.GetEnumerator() 
    at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection) 
    at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source) 
    at KevinLisaWedding.Controllers.HomeController.Index() in c:\Users\kdonde\Documents\Visual Studio 2013\Projects\KevinLisaWedding\KevinLisaWedding\Controllers\HomeController.cs:line 14 
    at lambda_method(Closure , ControllerBase , Object[]) 
    at System.Web.Mvc.ActionMethodDispatcher.Execute(ControllerBase controller, Object[] parameters) 
    at System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters) 
    at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters) 
    at System.Web.Mvc.Async.AsyncControllerActionInvoker.ActionInvocation.InvokeSynchronousActionMethod() 
    at System.Web.Mvc.Async.AsyncControllerActionInvoker.<BeginInvokeSynchronousActionMethod>b__36(IAsyncResult asyncResult, ActionInvocation innerInvokeState) 
    at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResult`2.CallEndDelegate(IAsyncResult asyncResult) 
    at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResultBase`1.End() 
    at System.Web.Mvc.Async.AsyncResultWrapper.End[TResult](IAsyncResult asyncResult, Object tag) 
    at System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethod(IAsyncResult asyncResult) 
    at System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3c() 
    at System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.<>c__DisplayClass45.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3e() 

ich auch Hochs und Tiefs nach, warum ich diese Störung erhalte ohne Erfolg eines gesucht habe Und ich habe das fertige Projekt heruntergeladen und ohne Glück mit meinem verglichen.

Mein aktueller Code ist wie folgt.

Im WeddingPreparations Projekt ...

namespace WeddingPreparations.Dal 
{ 
    public class WeddingContext : DbContext 
    { 
     public WeddingContext() 
      : base("WeddingContext") 
     { 

     } 

     // Any entities reference by this class will be implicitly included. 
     public DbSet<Invitee> Invitees { get; set; } 

     protected override void OnModelCreating(DbModelBuilder modelBuilder) 
     { 
      modelBuilder.Conventions.Remove<PluralizingTableNameConvention>(); 
      //base.OnModelCreating(modelBuilder); 
     } 
    } 
} 

und

namespace WeddingPreparations.Dal 
{ 
    public class WeddingInitializer : System.Data.Entity.DropCreateDatabaseIfModelChanges<WeddingContext> 
    { 
     protected override void Seed(WeddingContext context) 
     { 
      //base.Seed(context); 
      var invitees = new List<Invitee> 
      { 
       new Invitee{ FirstName= "FName1", LastName= "LName1", Attending = true, HotelRoomRequired= true, Notes="I'm the groom! :)"}, 
       new Invitee{ FirstName= "FName2", LastName= "LName2", Attending = true, HotelRoomRequired= true, Notes="I'm the bride! :)"} 

      }; 
      invitees.ForEach(i => context.Invitees.Add(i)); 
      context.SaveChanges(); 
     } 
    } 
} 

in diesem Projekt Mein Modell ist als

namespace WeddingPreparations.Models 
{ 
    public class Invitee 
    { 
     public int Id { get; set; } 
     public string FirstName { get; set; } 
     public string LastName { get; set; } 
     public bool Attending { get; set; } 
     public bool HotelRoomRequired { get; set; } 
     public string Notes { get; set; } 
    } 
} 

Im mvc Projekt folgt ich auf der folgenden Website haben .config-Datei ...

<?xml version="1.0" encoding="utf-8"?> 
<!-- 
    For more information on how to configure your ASP.NET application, please visit 
    http://go.microsoft.com/fwlink/?LinkId=301880 
    --> 
<configuration> 
    <configSections> 

    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" /> 
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 --></configSections> 
    <connectionStrings> 
    <add name="WeddingContext" connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=WeddingInvites;Integrated Security=SSPI;" providerName="System.Data.SqlClient" /> 
    </connectionStrings> 
    <appSettings> 
    <add key="webpages:Version" value="3.0.0.0" /> 
    <add key="webpages:Enabled" value="false" /> 
    <add key="ClientValidationEnabled" value="true" /> 
    <add key="UnobtrusiveJavaScriptEnabled" value="true" /> 
    </appSettings> 
    <system.web> 
    <compilation debug="true" targetFramework="4.5" /> 
    <httpRuntime targetFramework="4.5" /> 
    </system.web> 
    <runtime> 
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
     <dependentAssembly> 
     <assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" /> 
     <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" /> 
     </dependentAssembly> 
     <dependentAssembly> 
     <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" /> 
     <bindingRedirect oldVersion="1.0.0.0-5.0.0.0" newVersion="5.0.0.0" /> 
     </dependentAssembly> 
     <dependentAssembly> 
     <assemblyIdentity name="System.Web.Optimization" publicKeyToken="31bf3856ad364e35" /> 
     <bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="1.1.0.0" /> 
     </dependentAssembly> 
     <dependentAssembly> 
     <assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" /> 
     <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" /> 
     </dependentAssembly> 
     <dependentAssembly> 
     <assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35" /> 
     <bindingRedirect oldVersion="0.0.0.0-1.5.2.14234" newVersion="1.5.2.14234" /> 
     </dependentAssembly> 
     <dependentAssembly> 
     <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" /> 
     <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" /> 
     </dependentAssembly> 
     <dependentAssembly> 
     <assemblyIdentity name="Ninject" publicKeyToken="c7192dc5380945e7" culture="neutral" /> 
     <bindingRedirect oldVersion="0.0.0.0-3.2.0.0" newVersion="3.2.0.0" /> 
     </dependentAssembly> 
    </assemblyBinding> 
    </runtime> 
    <system.webServer> 
    <handlers> 
     <remove name="ExtensionlessUrlHandler-Integrated-4.0" /> 
     <remove name="OPTIONSVerbHandler" /> 
     <remove name="TRACEVerbHandler" /> 
     <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" /> 
    </handlers> 
    </system.webServer> 
    <entityFramework> 
    <contexts> 
     <context type="WeddingPreparations.Dal.WeddingContext"> 
     <databaseInitializer type="WeddingPreparations.Dal.WeddingInitializer, KevinLisaWedding" /> 
     </context> 
    </contexts> 
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework" > 
    <parameters> 
     <parameter value="v11.0"/> 
    </parameters> 
    </defaultConnectionFactory> 
    <providers> 
     <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" /> 
    </providers> 
    </entityFramework> 
</configuration> 

Und in meinem Hause Controller den folgenden Code Ich Ausführung ...

WeddingPreparations.Dal.WeddingContext ctx = new WeddingPreparations.Dal.WeddingContext(); 
var x = ctx.Invitees.ToList(); 

, die die Datenbank erstellen soll, wenn ich nicht bin zu verkennen und sie mit den Daten von Saatgut in den Initialisierer angegeben ... aber alles, was ich bekomme, ist dieser Fehler und ich kann es nicht verstehen ... jede Richtung wird geschätzt.

aktualisiert

Ich habe versucht, das Projekt als eine neu zu erstellen wie sie im Tutorial taten und, aber ich immer noch mit dem gleichen Fehler enden. Es muss Code fehlen ... entweder habe ich es verpasst ... oder das Tutorial hat es einfach nicht.

+0

Wie lautet der Name der Assembly, die erstellt wird? Ist es WeddingPreparations oder KevinLisaWedding? – DavidG

+0

KevinLisaWedding ist das Website-Projekt und WeddingPreparations ist die DLL mit den Entity-Modellen und Entity-Framework-Kontext etc. –

+1

Funktioniert es, wenn Sie den Initialisierer im 'DbContext'-Konstruktor setzen, so:' Database.SetInitializer (new WeddingInitializer()) ; ' – david004

Antwort

21

In Ihrer web.config Datei, die Sie haben dies:

<contexts> 
    <context type="WeddingPreparations.Dal.WeddingContext"> 
     <databaseInitializer type="WeddingPreparations.Dal.WeddingInitializer, KevinLisaWedding" /> 
    </context> 
</contexts> 

Dies sagt für eine Klasse WeddingPreparations.Dal.WeddingInitializer in der KevinLisaWedding genannt Versammlung genannt aussehen.Wenn Ihre Assembly WeddingPreparations aufgerufen wird, müssen Sie die Konfiguration wie folgt ändern:

<contexts> 
    <context type="WeddingPreparations.Dal.WeddingContext, WeddingPreparations"> 
     <databaseInitializer type="WeddingPreparations.Dal.WeddingInitializer, WeddingPreparations" /> 
    </context> 
</contexts> 
+0

DavidG Ich hatte das tatsächlich ein paar Mal probiert. Ich habe es einfach wieder umgeschaltet und bekomme immer noch den gleichen Fehler. Danke für den Vorschlag. –

+0

Versuchen Sie, den Kontexttyp auch dort anzugeben. Ich habe meine Antwort aktualisiert. – DavidG

+0

Hölle ja !!! Das hat funktioniert. Vielen Dank. –

Verwandte Themen