Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Metadata :: null argument in ReferenceBuilder #4715

Closed
maumar opened this issue Mar 7, 2016 · 1 comment
Closed

Metadata :: null argument in ReferenceBuilder #4715

maumar opened this issue Mar 7, 2016 · 1 comment
Assignees
Labels
closed-fixed The issue has been fixed and is/will be included in the release indicated by the issue milestone. type-bug
Milestone

Comments

@maumar
Copy link
Contributor

maumar commented Mar 7, 2016

Model:

public class IdentityUser
{
    public string Id { get; set; }
}

public class ApplicationUser : IdentityUser
{
    public List<FollowUser> Followers { get; set; }
    public List<Content> Content { get; set; }
}

public class User : ApplicationUser
{
    public List<Character> Characters { get; set; }
    public List<FollowUser> Following { get; set; }
}

public class Character : ApplicationUser
{
    [Column(TypeName = "nvarchar(450)")]
    public string OwnerId { get; set; }
     public User Owner { get; set; }
}

public class FollowUser
{
    public int Id { get; set; }

    [Column(TypeName = "nvarchar(450)")]
    public string UserId { get; set; }
    public User User { get; set; }

    [Column(TypeName = "nvarchar(450)")]
    public string FollowingId { get; set; }
    public ApplicationUser Following { get; set; }
}

public class Content
{
    public Guid Id { get; set; }
    public string ContentType { get; set; }
    public DateTime Timestamp { get; set; }

    public List<Content> Comments { get; set; }

    public Guid? CommentOfId { get; set; }
    public Content CommentOf { get; set; }

    [Column(TypeName = "nvarchar(450)")]
    public string OwnerId { get; set; }
    public ApplicationUser Owner { get; set; }
}

public class ApplicationDbContext : DbContext
    {

        public DbSet<ApplicationUser> Users { get; set;}
        public DbSet<FollowUser> FollowUser { get; set; }
        public DbSet<Content> Content { get; set; }

        protected override void OnModelCreating(ModelBuilder builder)
        {
            base.OnModelCreating(builder);

            builder.Entity<ApplicationUser>()
                .HasDiscriminator<string>("AccountType")
                .HasValue<User>("User")
                .HasValue<Character>("Character");

            builder.Entity<User>()
                .HasMany(x => x.Characters)
                .WithOne(x => x.Owner)
                .HasForeignKey(x => x.OwnerId)
                .HasPrincipalKey(x => x.Id);

            builder.Entity<FollowUser>()
                .HasOne(x => x.User)
                .WithMany(x => x.Following)
                .OnDelete(DeleteBehavior.Cascade);

            builder.Entity<Content>()
                .HasOne(x => x.Owner)
                .WithMany(x => x.Content)
                .HasForeignKey(x => x.OwnerId);

            builder.Entity<Content>()
                .HasMany(x => x.Comments)
                .WithOne(x => x.CommentOf)
                .OnDelete(DeleteBehavior.Restrict);
        }
    }

Exception:

Value cannot be null.
Parameter name: relationshipBuilder

at Microsoft.EntityFrameworkCore.Utilities.Check.NotNull[T](T value, String parameterName) in D:\k\EntityFramework\src\Shared\Check.cs:line 24
at Microsoft.EntityFrameworkCore.Metadata.Conventions.Internal.ConventionDispatcher.OnForeignKeyAdded(InternalRelationshipBuilder relationshipBuilder) in D:\k\EntityFramework\src\Microsoft.EntityFrameworkCore\Metadata\Conventions\Internal\ConventionDispatcher.cs:line 74
at Microsoft.EntityFrameworkCore.Metadata.Internal.InternalRelationshipBuilder.ReplaceForeignKey(InternalEntityTypeBuilder principalEntityTypeBuilder, InternalEntityTypeBuilder dependentEntityTypeBuilder, String navigationToPrincipalName, String navigationToDependentName, IReadOnlyList1 dependentProperties, IReadOnlyList1 principalProperties, Nullable1 isUnique, Nullable1 isRequired, Nullable1 deleteBehavior, Boolean oldRelationshipInverted, Nullable1 principalEndConfigurationSource, Nullable1 configurationSource, Boolean runConventions) in D:\k\EntityFramework\src\Microsoft.EntityFrameworkCore\Metadata\Internal\InternalRelationshipBuilder.cs:line 1406 at Microsoft.EntityFrameworkCore.Metadata.Internal.InternalRelationshipBuilder.ReplaceForeignKey(Nullable1 configurationSource, InternalEntityTypeBuilder principalEntityTypeBuilder, InternalEntityTypeBuilder dependentEntityTypeBuilder, String navigationToPrincipalName, String navigationToDependentName, IReadOnlyList1 dependentProperties, IReadOnlyList1 principalProperties, Nullable1 isUnique, Nullable1 isRequired, Nullable1 deleteBehavior, Boolean strictPrincipal, Boolean oldRelationshipInverted, Boolean runConventions) in D:\k\EntityFramework\src\Microsoft.EntityFrameworkCore\Metadata\Internal\InternalRelationshipBuilder.cs:line 1060 at Microsoft.EntityFrameworkCore.Metadata.Internal.InternalRelationshipBuilder.Navigations(String navigationToPrincipalName, String navigationToDependentName, ConfigurationSource configurationSource) in D:\k\EntityFramework\src\Microsoft.EntityFrameworkCore\Metadata\Internal\InternalRelationshipBuilder.cs:line 65 at Microsoft.EntityFrameworkCore.Metadata.Internal.InternalEntityTypeBuilder.Relationship(InternalEntityTypeBuilder principalEntityTypeBuilder, String navigationToPrincipalName, String navigationToDependentName, ConfigurationSource configurationSource, Boolean setPrincipalEnd, Nullable1 isUnique) in D:\k\EntityFramework\src\Microsoft.EntityFrameworkCore\Metadata\Internal\InternalEntityTypeBuilder.cs:line 1229
at Microsoft.EntityFrameworkCore.Metadata.Internal.InternalEntityTypeBuilder.Relationship(InternalEntityTypeBuilder targetEntityTypeBuilder, PropertyInfo navigationToTarget, PropertyInfo inverseNavigation, ConfigurationSource configurationSource) in D:\k\EntityFramework\src\Microsoft.EntityFrameworkCore\Metadata\Internal\InternalEntityTypeBuilder.cs:line 1102
at Microsoft.EntityFrameworkCore.Metadata.Internal.InternalEntityTypeBuilder.Relationship(InternalEntityTypeBuilder targetEntityTypeBuilder, PropertyInfo navigationToTarget, PropertyInfo inverseNavigation, ConfigurationSource configurationSource) in D:\k\EntityFramework\src\Microsoft.EntityFrameworkCore\Metadata\Internal\InternalEntityTypeBuilder.cs:line 1081
at Microsoft.EntityFrameworkCore.Metadata.Conventions.Internal.RelationshipDiscoveryConvention.CreateRelationships(IReadOnlyList1 relationshipCandidates, InternalEntityTypeBuilder entityTypeBuilder) in D:\k\EntityFramework\src\Microsoft.EntityFrameworkCore\Metadata\Conventions\Internal\RelationshipDiscoveryConvention.cs:line 285 at Microsoft.EntityFrameworkCore.Metadata.Conventions.Internal.RelationshipDiscoveryConvention.Apply(InternalEntityTypeBuilder entityTypeBuilder) in D:\k\EntityFramework\src\Microsoft.EntityFrameworkCore\Metadata\Conventions\Internal\RelationshipDiscoveryConvention.cs:line 28 at Microsoft.EntityFrameworkCore.Metadata.Conventions.Internal.RelationshipDiscoveryConvention.Apply(InternalRelationshipBuilder relationshipBuilder, Navigation navigation) in D:\k\EntityFramework\src\Microsoft.EntityFrameworkCore\Metadata\Conventions\Internal...crosoft.Extensions.DependencyInjection.ServiceProvider.ScopedCallSite.Invoke(ServiceProvider provider) at Microsoft.Extensions.DependencyInjection.ServiceProvider.<>c__DisplayClass12_0.<RealizeService>b__0(ServiceProvider provider) at Microsoft.Extensions.DependencyInjection.ServiceProvider.GetService(Type serviceType) at Microsoft.Extensions.DependencyInjection.ServiceProviderExtensions.GetRequiredService(IServiceProvider provider, Type serviceType) at Microsoft.Extensions.DependencyInjection.ServiceProviderExtensions.GetRequiredService[T](IServiceProvider provider) at Microsoft.EntityFrameworkCore.Storage.DatabaseProviderServices.GetService[TService]() in D:\k\EntityFramework\src\Microsoft.EntityFrameworkCore\Storage\DatabaseProviderServices.cs:line 57 at Microsoft.EntityFrameworkCore.Storage.Internal.SqlServerDatabaseProviderServices.get_Creator() in D:\k\EntityFramework\src\Microsoft.EntityFrameworkCore.SqlServer\Storage\Internal\SqlServerDatabaseProviderServices.cs:line 36 at Microsoft.Extensions.DependencyInjection.EntityFrameworkServiceCollectionExtensions.<>c.<AddEntityFramework>b__0_11(IServiceProvider p) in D:\k\EntityFramework\src\Microsoft.EntityFrameworkCore\EntityFrameworkServiceCollectionExtensions.cs:line 117 at Microsoft.Extensions.DependencyInjection.ServiceLookup.FactoryService.Invoke(ServiceProvider provider) at Microsoft.Extensions.DependencyInjection.ServiceProvider.ScopedCallSite.Invoke(ServiceProvider provider) at Microsoft.Extensions.DependencyInjection.ServiceProvider.<>c__DisplayClass12_0.<RealizeService>b__0(ServiceProvider provider) at Microsoft.Extensions.DependencyInjection.ServiceProvider.GetService(Type serviceType) at Microsoft.Extensions.DependencyInjection.ServiceProviderExtensions.GetRequiredService(IServiceProvider provider, Type serviceType) at Microsoft.Extensions.DependencyInjection.ServiceProviderExtensions.GetRequiredService[T](IServiceProvider provider) at Microsoft.EntityFrameworkCore.Infrastructure.AccessorExtensions.GetService[TService](IInfrastructure1 accessor) in D:\k\EntityFramework\src\Microsoft.EntityFrameworkCore\Infrastructure\AccessorExtensions.cs:line 44
at Microsoft.EntityFrameworkCore.Infrastructure.DatabaseFacade.EnsureCreated() in D:\k\EntityFramework\src\Microsoft.EntityFrameworkCore\Infrastructure\DatabaseFacade.cs:line 41
at Microsoft.EntityFrameworkCore.SqlServer.FunctionalTests.QueryBugsTest.<>c__DisplayClass43_01.<CreateTestStore>b__0() in D:\k\EntityFramework\test\Microsoft.EntityFrameworkCore.SqlServer.FunctionalTests\QueryBugsTest.cs:line 796 at Microsoft.EntityFrameworkCore.FunctionalTests.TestStore.CreateShared(String name, Action initializeDatabase) in D:\k\EntityFramework\test\Microsoft.EntityFrameworkCore.FunctionalTests\TestStore.cs:line 29 at Microsoft.EntityFrameworkCore.SqlServer.FunctionalTests.Utilities.SqlServerTestStore.CreateShared(Action initializeDatabase) in D:\k\EntityFramework\test\Microsoft.EntityFrameworkCore.SqlServer.FunctionalTests\Utilities\SqlServerTestStore.cs:line 63 at Microsoft.EntityFrameworkCore.SqlServer.FunctionalTests.Utilities.SqlServerTestStore.GetOrCreateShared(String name, Action initializeDatabase) in D:\k\EntityFramework\test\Microsoft.EntityFrameworkCore.SqlServer.FunctionalTests\Utilities\SqlServerTestStore.cs:line 22 at Microsoft.EntityFrameworkCore.SqlServer.FunctionalTests.QueryBugsTest.CreateTestStore[TContext](String databaseName, IServiceProvider serviceProvider, Func3 contextCreator, Action`1 contextInitializer) in D:\k\EntityFramework\test\Microsoft.EntityFrameworkCore.SqlServer.FunctionalTests\QueryBugsTest.cs:line 789
at Microsoft.EntityFrameworkCore.SqlServer.FunctionalTests.QueryBugsTest.CreateDatabase3180() in D:\k\EntityFramework\test\Microsoft.EntityFrameworkCore.SqlServer.FunctionalTests\QueryBugsTest.cs:line 653
at Microsoft.EntityFrameworkCore.SqlServer.FunctionalTests.QueryBugsTest.Repro3180() in D:\k\EntityFramework\test\Microsoft.EntityFrameworkCore.SqlServer.FunctionalTests\QueryBugsTest.cs:line 625

@maumar
Copy link
Contributor Author

maumar commented Mar 7, 2016

@smitpatel

@rowanmiller rowanmiller added this to the 1.0.0 milestone Mar 8, 2016
@smitpatel smitpatel modified the milestones: 1.0.0-rc2, 1.0.0 Mar 11, 2016
@ajcvickers ajcvickers added the closed-fixed The issue has been fixed and is/will be included in the release indicated by the issue milestone. label Oct 15, 2022
@ajcvickers ajcvickers modified the milestones: 1.0.0-rc2, 1.0.0 Oct 15, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
closed-fixed The issue has been fixed and is/will be included in the release indicated by the issue milestone. type-bug
Projects
None yet
Development

No branches or pull requests

4 participants