aspnet / MusicStore

[Archived] MusicStore test application that uses ASP.NET/EF Core. Project moved to https://github.com/aspnet/AspNetCore
1.3k stars 878 forks source link

MusicStore.Spa: InitializeMusicStoreDatabase EntityFramework Exception #486

Closed adun closed 9 years ago

adun commented 9 years ago

I've just pulled the repo to launch the sample. The project has been loaded using Visual Studio 2015 RC. I've restored packages and starting the MusicStore.Spa project produces the following Error:

System.AggregateException was unhandled by user code
  HResult=-2146233088
  Message=One or more errors occurred.
  Source=mscorlib
  StackTrace:
       at System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions)
       at System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, CancellationToken cancellationToken)
       at System.Threading.Tasks.Task.Wait()
       at MusicStore.Spa.Startup.Configure(IApplicationBuilder app) in C:\workspace\projects\MusicStore\src\MusicStore.Spa\Startup.cs:line 71
  InnerException: 
       HResult=-2146233079
       Message=The property 'ArtistId' on entity type 'Artist' does not have value generation on add enabled and it is principal by at least one foreign key. Properties referenced by foreign keys should have value generation on add enabled.
       Source=EntityFramework.Core
       StackTrace:
            at Microsoft.Data.Entity.Internal.ModelValidator.ShowError(String message)
            at Microsoft.Data.Entity.Internal.ModelValidator.VerifyRootPrincipal(IProperty principalProperty, Dictionary`2 verifiedProperties, ImmutableList`1 visitedForeignKeys, String& errorMessage)
            at Microsoft.Data.Entity.Internal.ModelValidator.VerifyRootPrincipal(IProperty principalProperty, Dictionary`2 verifiedProperties, ImmutableList`1 visitedForeignKeys, String& errorMessage)
            at Microsoft.Data.Entity.Internal.ModelValidator.EnsureValidForeignKeyChains(IModel model)
            at Microsoft.Data.Entity.Internal.ModelValidator.Validate(IModel model)
            at Microsoft.Data.Entity.Internal.ModelSource.CreateModel(DbContext context, IModelBuilderFactory modelBuilderFactory)
            at Microsoft.Data.Entity.Internal.ModelSource.<>c__DisplayClass8_0.<GetModel>b__0(Type k)
            at Microsoft.Data.Entity.Utilities.ThreadSafeDictionaryCache`2.GetOrAdd(TKey key, Func`2 factory)
            at Microsoft.Data.Entity.Internal.ModelSource.GetModel(DbContext context, IModelBuilderFactory modelBuilderFactory)
            at Microsoft.Data.Entity.Internal.DbContextServices.CreateModel()
            at Microsoft.Data.Entity.Utilities.LazyRef`1.get_Value()
            at Microsoft.Data.Entity.Internal.DbContextServices.get_Model()
            at Microsoft.Framework.DependencyInjection.EntityFrameworkServiceCollectionExtensions.<>c.<AddEntityFramework>b__0_5(IServiceProvider p)
            at Microsoft.Framework.DependencyInjection.ServiceLookup.FactoryService.Invoke(ServiceProvider provider)
            at Microsoft.Framework.DependencyInjection.ServiceProvider.ScopedCallSite.Invoke(ServiceProvider provider)
            at Microsoft.Framework.DependencyInjection.ServiceLookup.Service.ConstructorCallSite.Invoke(ServiceProvider provider)
            at Microsoft.Framework.DependencyInjection.ServiceProvider.ScopedCallSite.Invoke(ServiceProvider provider)
            at Microsoft.Framework.DependencyInjection.ServiceLookup.Service.ConstructorCallSite.Invoke(ServiceProvider provider)
            at Microsoft.Framework.DependencyInjection.ServiceProvider.ScopedCallSite.Invoke(ServiceProvider provider)
            at Microsoft.Framework.DependencyInjection.ServiceProvider.<>c__DisplayClass8_0.<RealizeService>b__0(ServiceProvider provider)
            at Microsoft.Framework.DependencyInjection.ServiceProvider.GetService(Type serviceType)
            at Microsoft.Framework.DependencyInjection.ServiceProviderExtensions.GetRequiredService(IServiceProvider provider, Type serviceType)
            at Microsoft.Framework.DependencyInjection.ServiceProviderExtensions.GetRequiredService[T](IServiceProvider provider)
            at Microsoft.Data.Entity.SqlServer.SqlServerDataStoreServices.get_DatabaseFactory()
            at Microsoft.Framework.DependencyInjection.EntityFrameworkServiceCollectionExtensions.<>c.<AddEntityFramework>b__0_11(IServiceProvider p)
            at Microsoft.Framework.DependencyInjection.ServiceLookup.FactoryService.Invoke(ServiceProvider provider)
            at Microsoft.Framework.DependencyInjection.ServiceProvider.ScopedCallSite.Invoke(ServiceProvider provider)
            at Microsoft.Framework.DependencyInjection.ServiceProvider.<>c__DisplayClass8_0.<RealizeService>b__0(ServiceProvider provider)
            at Microsoft.Framework.DependencyInjection.ServiceProvider.GetService(Type serviceType)
            at Microsoft.Framework.DependencyInjection.ServiceProviderExtensions.GetRequiredService(IServiceProvider provider, Type serviceType)
            at Microsoft.Framework.DependencyInjection.ServiceProviderExtensions.GetRequiredService[T](IServiceProvider provider)
            at Microsoft.Data.Entity.DbContext.GetDatabase()
            at Microsoft.Data.Entity.Utilities.LazyRef`1.get_Value()
            at Microsoft.Data.Entity.DbContext.get_Database()
            at MusicStore.Models.SampleData.<InitializeMusicStoreDatabaseAsync>d__1.MoveNext() in C:\workspace\projects\MusicStore\src\MusicStore.Spa\Models\SampleData.cs:line 24
       InnerException: 

Regards

punkouter2021 commented 9 years ago

I have same problem.. I have a basic machine with just Win10 and VS 2015 RC. Anyone ??

daldegam commented 9 years ago

I have same problem! Run on Mac OS X...

Active Version              Runtime Arch Location             Alias
------ -------              ------- ---- --------             -----
  *    1.0.0-beta4          mono         ~/.dnx/runtimes      default
➜  MusicStore.Spa git:(master) dnx . kestrel
System.InvalidOperationException: The property 'ArtistId' on entity type 'Artist' does not have value generation on add enabled and it is principal by at least one foreign key. Properties referenced by foreign keys should have value generation on add enabled.
  at Microsoft.Data.Entity.Internal.ModelValidator.ShowError (System.String message) [0x00000] in <filename unknown>:0 
  at Microsoft.Data.Entity.Internal.ModelValidator.VerifyRootPrincipal (IProperty principalProperty, System.Collections.Generic.Dictionary`2 verifiedProperties, System.Collections.Immutable.ImmutableList`1 visitedForeignKeys, System.String& errorMessage) [0x00000] in <filename unknown>:0 
  at Microsoft.Data.Entity.Internal.ModelValidator.VerifyRootPrincipal (IProperty principalProperty, System.Collections.Generic.Dictionary`2 verifiedProperties, System.Collections.Immutable.ImmutableList`1 visitedForeignKeys, System.String& errorMessage) [0x00000] in <filename unknown>:0 
  at Microsoft.Data.Entity.Internal.ModelValidator.EnsureValidForeignKeyChains (IModel model) [0x00000] in <filename unknown>:0 
  at Microsoft.Data.Entity.Internal.ModelValidator.Validate (IModel model) [0x00000] in <filename unknown>:0 
  at Microsoft.Data.Entity.Internal.ModelSource.CreateModel (Microsoft.Data.Entity.DbContext context, IModelBuilderFactory modelBuilderFactory) [0x00000] in <filename unknown>:0 
  at Microsoft.Data.Entity.Internal.ModelSource+<>c__DisplayClass8_0.<GetModel>b__0 (System.Type k) [0x00000] in <filename unknown>:0 
  at Microsoft.Data.Entity.Utilities.ThreadSafeDictionaryCache`2[System.Type,Microsoft.Data.Entity.Metadata.IModel].GetOrAdd (System.Type key, System.Func`2 factory) [0x00000] in <filename unknown>:0 
  at Microsoft.Data.Entity.Internal.ModelSource.GetModel (Microsoft.Data.Entity.DbContext context, IModelBuilderFactory modelBuilderFactory) [0x00000] in <filename unknown>:0 
  at Microsoft.Data.Entity.Internal.DbContextServices.CreateModel () [0x00000] in <filename unknown>:0 
  at Microsoft.Data.Entity.Utilities.LazyRef`1[Microsoft.Data.Entity.Metadata.IModel].get_Value () [0x00000] in <filename unknown>:0 
  at Microsoft.Data.Entity.Internal.DbContextServices.get_Model () [0x00000] in <filename unknown>:0 
  at Microsoft.Framework.DependencyInjection.EntityFrameworkServiceCollectionExtensions+<>c.<AddEntityFramework>b__0_5 (IServiceProvider p) [0x00000] in <filename unknown>:0 
  at Microsoft.Framework.DependencyInjection.ServiceLookup.FactoryService.Invoke (Microsoft.Framework.DependencyInjection.ServiceProvider provider) [0x00000] in <filename unknown>:0 
  at Microsoft.Framework.DependencyInjection.ServiceProvider+ScopedCallSite.Invoke (Microsoft.Framework.DependencyInjection.ServiceProvider provider) [0x00000] in <filename unknown>:0 
  at Microsoft.Framework.DependencyInjection.ServiceLookup.Service+ConstructorCallSite.Invoke (Microsoft.Framework.DependencyInjection.ServiceProvider provider) [0x00000] in <filename unknown>:0 
  at Microsoft.Framework.DependencyInjection.ServiceProvider+ScopedCallSite.Invoke (Microsoft.Framework.DependencyInjection.ServiceProvider provider) [0x00000] in <filename unknown>:0 
  at Microsoft.Framework.DependencyInjection.ServiceLookup.Service+ConstructorCallSite.Invoke (Microsoft.Framework.DependencyInjection.ServiceProvider provider) [0x00000] in <filename unknown>:0 
  at Microsoft.Framework.DependencyInjection.ServiceProvider+ScopedCallSite.Invoke (Microsoft.Framework.DependencyInjection.ServiceProvider provider) [0x00000] in <filename unknown>:0 
  at Microsoft.Framework.DependencyInjection.ServiceProvider+<>c__DisplayClass8_0.<RealizeService>b__0 (Microsoft.Framework.DependencyInjection.ServiceProvider provider) [0x00000] in <filename unknown>:0 
  at Microsoft.Framework.DependencyInjection.ServiceProvider.GetService (System.Type serviceType) [0x00000] in <filename unknown>:0 
  at Microsoft.Framework.DependencyInjection.ServiceProviderExtensions.GetRequiredService (IServiceProvider provider, System.Type serviceType) [0x00000] in <filename unknown>:0 
  at Microsoft.Framework.DependencyInjection.ServiceProviderExtensions.GetRequiredService[ISqlServerDatabaseFactory] (IServiceProvider provider) [0x00000] in <filename unknown>:0 
  at Microsoft.Data.Entity.SqlServer.SqlServerDataStoreServices.get_DatabaseFactory () [0x00000] in <filename unknown>:0 
  at Microsoft.Framework.DependencyInjection.EntityFrameworkServiceCollectionExtensions+<>c.<AddEntityFramework>b__0_11 (IServiceProvider p) [0x00000] in <filename unknown>:0 
  at Microsoft.Framework.DependencyInjection.ServiceLookup.FactoryService.Invoke (Microsoft.Framework.DependencyInjection.ServiceProvider provider) [0x00000] in <filename unknown>:0 
  at Microsoft.Framework.DependencyInjection.ServiceProvider+ScopedCallSite.Invoke (Microsoft.Framework.DependencyInjection.ServiceProvider provider) [0x00000] in <filename unknown>:0 
  at Microsoft.Framework.DependencyInjection.ServiceProvider+<>c__DisplayClass8_0.<RealizeService>b__0 (Microsoft.Framework.DependencyInjection.ServiceProvider provider) [0x00000] in <filename unknown>:0 
  at Microsoft.Framework.DependencyInjection.ServiceProvider.GetService (System.Type serviceType) [0x00000] in <filename unknown>:0 
  at Microsoft.Framework.DependencyInjection.ServiceProviderExtensions.GetRequiredService (IServiceProvider provider, System.Type serviceType) [0x00000] in <filename unknown>:0 
  at Microsoft.Framework.DependencyInjection.ServiceProviderExtensions.GetRequiredService[IDatabaseFactory] (IServiceProvider provider) [0x00000] in <filename unknown>:0 
  at Microsoft.Data.Entity.DbContext.GetDatabase () [0x00000] in <filename unknown>:0 
  at Microsoft.Data.Entity.Utilities.LazyRef`1[Microsoft.Data.Entity.Infrastructure.Database].get_Value () [0x00000] in <filename unknown>:0 
  at Microsoft.Data.Entity.DbContext.get_Database () [0x00000] in <filename unknown>:0 
  at MusicStore.Models.SampleData+<InitializeMusicStoreDatabaseAsync>d__1.MoveNext () [0x00000] in <filename unknown>:0 
4nonym0us commented 9 years ago

The same. Specs: Win8.1, VS 2015 RC.

System.InvalidOperationException
The property 'ArtistId' on entity type 'Artist' does not have value generation on add enabled and it is principal by at least one foreign key. Properties referenced by foreign keys should have value ## generation on add enabled.
D:\Downloads\MusicStore-master\src\MusicStore.Spa\Models\SampleData.cs
Line 22:              using (var db = serviceProvider.GetService<MusicStoreContext>())
Line 23:              {
Line 24:                  var sqlServerDatabase = db.Database as SqlServerDatabase;
Line 25:                  if (sqlServerDatabase != null)
Line 26:                  {
PlatinumEagle commented 9 years ago

_WORKAROUND:_ (functional as of 6/24/2015):

I had the same problem, but was determined to figure out why. Without getting into a big thing about what is being done and why, you can successfully work around the issue by allowing IDs to be generated instead of provided (when using SQL server) by commenting out the ID generation on Artist and Genre. While this would not be a good idea to do with lookup info for a production app, but I simply wanted to examine this sample for other stuff.

First, if you tried to run it and in the process the database shell was created, it would be best to delete it first.

Then, in Models/SampleData.cs, comment out the following lines:

    //genre.GenreId = genreId++;

    //artist.ArtistId = artistId++;

/ Rob /

joerter commented 9 years ago

Here is the same issue over at the EntityFramework repository:

https://github.com/aspnet/EntityFramework/issues/2284

Eilon commented 9 years ago

The MusicStore.Spa project has been removed from this repo. Only the MusicStore (ASP.NET 5, non-SPA) remains. See https://github.com/aspnet/MusicStore/issues/537 for more info.

Eilon commented 9 years ago

(To clarify, it's gone from the dev branch - it will be merged to master soon.)