When trying to issue query (or whatever else) with the following model (with entity splitting and table splitting), I get NullReferenceException:
public class ArubaRun
{
public int Id { get; set; }
public ArubaOwner RunOwner { get; set; }
public ICollection<ArubaTask> Tasks { get; set; }
}
public class ArubaTask
{
public int Id { get; set; }
}
public class ArubaOwner
{
public int Id { get; set; }
public ArubaRun OwnedRun { get; set; }
public ICollection<ArubaBug> Bugs { get; set; }
}
public class ArubaBug
{
public int Id { get; set; }
public int Number { get; set; }
public string Comment { get; set; }
}
public class ArubaContext : DbContext
{
public DbSet<ArubaRun> Runs { get; set; }
public DbSet<ArubaTask> Tasks { get; set; }
public DbSet<ArubaOwner> Owners { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<ArubaRun>().HasRequired(r => r.RunOwner).WithRequiredDependent(o => o.OwnedRun);
// table splitting
modelBuilder.Entity<ArubaOwner>().ToTable("OwnersAndRuns");
modelBuilder.Entity<ArubaRun>().ToTable("OwnersAndRuns");
// entity splitting
modelBuilder.Entity<ArubaBug>().Map(m =>
{
m.Properties(p => new { p.Id, p.Comment });
m.ToTable("Bugs1");
});
modelBuilder.Entity<ArubaBug>().Map(m =>
{
m.Properties(p => new { p.Number });
m.ToTable("Bugs2");
});
}
}
Exception is as follows:
Object reference not set to an instance of an object.
System.Data.Entity.Edm.Serialization.EdmSerializationVisitor.VisitEdmAssociationSet(System.Data.Entity.Core.Metadata.Edm.AssociationSet item)
System.Data.Entity.Edm.EdmModelVisitor.VisitCollection<System.Data.Entity.Core.Metadata.Edm.AssociationSet>(System.Collections.Generic.IEnumerable<System.Data.Entity.Core.Metadata.Edm.AssociationSet> collection, System.Action<System.Data.Entity.Core.Metadata.Edm.AssociationSet> visitMethod)
System.Data.Entity.Edm.EdmModelVisitor.VisitAssociationSets(System.Data.Entity.Core.Metadata.Edm.EntityContainer container, System.Collections.Generic.IEnumerable<System.Data.Entity.Core.Metadata.Edm.AssociationSet> associationSets)
System.Data.Entity.Edm.EdmModelVisitor.VisitEdmEntityContainer(System.Data.Entity.Core.Metadata.Edm.EntityContainer item)
System.Data.Entity.Edm.Serialization.EdmSerializationVisitor.VisitEdmEntityContainer(System.Data.Entity.Core.Metadata.Edm.EntityContainer item)
System.Data.Entity.Edm.EdmModelVisitor.VisitCollection<System.Data.Entity.Core.Metadata.Edm.EntityContainer>(System.Collections.Generic.IEnumerable<System.Data.Entity.Core.Metadata.Edm.EntityContainer> collection, System.Action<System.Data.Entity.Core.Metadata.Edm.EntityContainer> visitMethod)
System.Data.Entity.Edm.EdmModelVisitor.VisitEntityContainers(System.Collections.Generic.IEnumerable<System.Data.Entity.Core.Metadata.Edm.EntityContainer> entityContainers)
System.Data.Entity.Edm.EdmModelVisitor.VisitEdmModel(System.Data.Entity.Core.Metadata.Edm.EdmModel item)
System.Data.Entity.Edm.Serialization.EdmSerializationVisitor.Visit(System.Data.Entity.Core.Metadata.Edm.EdmModel edmModel, string namespaceName, string provider, string providerManifestToken)
System.Data.Entity.Edm.Serialization.EdmSerializationVisitor.Visit(System.Data.Entity.Core.Metadata.Edm.EdmModel edmModel, string provider, string providerManifestToken)
System.Data.Entity.Edm.Serialization.SsdlSerializer.Serialize(System.Data.Entity.Core.Metadata.Edm.EdmModel dbDatabase, string provider, string providerManifestToken, System.Xml.XmlWriter xmlWriter, bool serializeDefaultNullability)
System.Data.Entity.ModelConfiguration.Edm.Serialization.EdmxSerializer.WriteEdmxRuntime()
System.Data.Entity.ModelConfiguration.Edm.Serialization.EdmxSerializer.Serialize(System.Data.Entity.Core.Metadata.Edm.DbDatabaseMapping databaseMapping, System.Data.Entity.Infrastructure.DbProviderInfo providerInfo, System.Xml.XmlWriter xmlWriter)
System.Data.Entity.Infrastructure.EdmxWriter.WriteEdmx(System.Data.Entity.Infrastructure.DbModel model, System.Xml.XmlWriter writer)
System.Data.Entity.Infrastructure.EdmxWriter.WriteEdmx(System.Data.Entity.DbContext context, System.Xml.XmlWriter writer)
System.Data.Entity.Utilities.DbContextExtensions.GetModel.AnonymousMethod__0(System.Xml.XmlWriter w)
System.Data.Entity.Utilities.DbContextExtensions.GetModel(System.Action<System.Xml.XmlWriter> writeXml)
System.Data.Entity.Utilities.DbContextExtensions.GetModel(System.Data.Entity.DbContext context)
System.Data.Entity.Internal.InternalContext.ModelMatches(System.Xml.Linq.XDocument model)
System.Data.Entity.Internal.ModelCompatibilityChecker.CompatibleWithModel(System.Data.Entity.Internal.InternalContext internalContext, System.Data.Entity.Internal.ModelHashCalculator modelHashCalculator, bool throwIfNoMetadata)
System.Data.Entity.Internal.InternalContext.CompatibleWithModel(bool throwIfNoMetadata)
System.Data.Entity.Database.CompatibleWithModel(bool throwIfNoMetadata)
System.Data.Entity.DropCreateDatabaseIfModelChanges<System.Data.Entity.TestModels.ArubaModel.ArubaContext>.InitializeDatabase(System.Data.Entity.TestModels.ArubaModel.ArubaContext context)
System.Data.Entity.Internal.InternalContext.CreateInitializationAction<System.Data.Entity.TestModels.ArubaModel.ArubaContext>.AnonymousMethod__b()
System.Data.Entity.Internal.InternalContext.PerformInitializationAction(System.Action action)
System.Data.Entity.Internal.InternalContext.PerformDatabaseInitialization()
System.Data.Entity.Internal.LazyInternalContext.InitializeDatabase.AnonymousMethod__4(System.Data.Entity.Internal.InternalContext c)
System.Data.Entity.Internal.RetryAction<System.Data.Entity.Internal.InternalContext>.PerformAction(System.Data.Entity.Internal.InternalContext input)
System.Data.Entity.Internal.LazyInternalContext.InitializeDatabaseAction(System.Action<System.Data.Entity.Internal.InternalContext> action)
System.Data.Entity.Internal.LazyInternalContext.InitializeDatabase()
System.Data.Entity.Internal.InternalContext.Initialize()
System.Data.Entity.Internal.InternalContext.GetEntitySetAndBaseTypeForType(System.Type entityType)
System.Data.Entity.Internal.Linq.InternalSet<System.Data.Entity.TestModels.ArubaModel.ArubaOwner>.Initialize()
System.Data.Entity.Internal.Linq.InternalSet<System.Data.Entity.TestModels.ArubaModel.ArubaOwner>.InternalContext.get()
System.Data.Entity.Infrastructure.DbQuery<System.Data.Entity.TestModels.ArubaModel.ArubaOwner>.System.Linq.IQueryable.Provider.get()
Comments: I am not sure if this is exactly the same issue but the stack trace looks very similar: http://entityframework.codeplex.com/discussions/434773
public class ArubaRun
{
public int Id { get; set; }
public ArubaOwner RunOwner { get; set; }
public ICollection<ArubaTask> Tasks { get; set; }
}
public class ArubaTask
{
public int Id { get; set; }
}
public class ArubaOwner
{
public int Id { get; set; }
public ArubaRun OwnedRun { get; set; }
public ICollection<ArubaBug> Bugs { get; set; }
}
public class ArubaBug
{
public int Id { get; set; }
public int Number { get; set; }
public string Comment { get; set; }
}
public class ArubaContext : DbContext
{
public DbSet<ArubaRun> Runs { get; set; }
public DbSet<ArubaTask> Tasks { get; set; }
public DbSet<ArubaOwner> Owners { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<ArubaRun>().HasRequired(r => r.RunOwner).WithRequiredDependent(o => o.OwnedRun);
// table splitting
modelBuilder.Entity<ArubaOwner>().ToTable("OwnersAndRuns");
modelBuilder.Entity<ArubaRun>().ToTable("OwnersAndRuns");
// entity splitting
modelBuilder.Entity<ArubaBug>().Map(m =>
{
m.Properties(p => new { p.Id, p.Comment });
m.ToTable("Bugs1");
});
modelBuilder.Entity<ArubaBug>().Map(m =>
{
m.Properties(p => new { p.Number });
m.ToTable("Bugs2");
});
}
}
Exception is as follows:
Object reference not set to an instance of an object.
System.Data.Entity.Edm.Serialization.EdmSerializationVisitor.VisitEdmAssociationSet(System.Data.Entity.Core.Metadata.Edm.AssociationSet item)
System.Data.Entity.Edm.EdmModelVisitor.VisitCollection<System.Data.Entity.Core.Metadata.Edm.AssociationSet>(System.Collections.Generic.IEnumerable<System.Data.Entity.Core.Metadata.Edm.AssociationSet> collection, System.Action<System.Data.Entity.Core.Metadata.Edm.AssociationSet> visitMethod)
System.Data.Entity.Edm.EdmModelVisitor.VisitAssociationSets(System.Data.Entity.Core.Metadata.Edm.EntityContainer container, System.Collections.Generic.IEnumerable<System.Data.Entity.Core.Metadata.Edm.AssociationSet> associationSets)
System.Data.Entity.Edm.EdmModelVisitor.VisitEdmEntityContainer(System.Data.Entity.Core.Metadata.Edm.EntityContainer item)
System.Data.Entity.Edm.Serialization.EdmSerializationVisitor.VisitEdmEntityContainer(System.Data.Entity.Core.Metadata.Edm.EntityContainer item)
System.Data.Entity.Edm.EdmModelVisitor.VisitCollection<System.Data.Entity.Core.Metadata.Edm.EntityContainer>(System.Collections.Generic.IEnumerable<System.Data.Entity.Core.Metadata.Edm.EntityContainer> collection, System.Action<System.Data.Entity.Core.Metadata.Edm.EntityContainer> visitMethod)
System.Data.Entity.Edm.EdmModelVisitor.VisitEntityContainers(System.Collections.Generic.IEnumerable<System.Data.Entity.Core.Metadata.Edm.EntityContainer> entityContainers)
System.Data.Entity.Edm.EdmModelVisitor.VisitEdmModel(System.Data.Entity.Core.Metadata.Edm.EdmModel item)
System.Data.Entity.Edm.Serialization.EdmSerializationVisitor.Visit(System.Data.Entity.Core.Metadata.Edm.EdmModel edmModel, string namespaceName, string provider, string providerManifestToken)
System.Data.Entity.Edm.Serialization.EdmSerializationVisitor.Visit(System.Data.Entity.Core.Metadata.Edm.EdmModel edmModel, string provider, string providerManifestToken)
System.Data.Entity.Edm.Serialization.SsdlSerializer.Serialize(System.Data.Entity.Core.Metadata.Edm.EdmModel dbDatabase, string provider, string providerManifestToken, System.Xml.XmlWriter xmlWriter, bool serializeDefaultNullability)
System.Data.Entity.ModelConfiguration.Edm.Serialization.EdmxSerializer.WriteEdmxRuntime()
System.Data.Entity.ModelConfiguration.Edm.Serialization.EdmxSerializer.Serialize(System.Data.Entity.Core.Metadata.Edm.DbDatabaseMapping databaseMapping, System.Data.Entity.Infrastructure.DbProviderInfo providerInfo, System.Xml.XmlWriter xmlWriter)
System.Data.Entity.Infrastructure.EdmxWriter.WriteEdmx(System.Data.Entity.Infrastructure.DbModel model, System.Xml.XmlWriter writer)
System.Data.Entity.Infrastructure.EdmxWriter.WriteEdmx(System.Data.Entity.DbContext context, System.Xml.XmlWriter writer)
System.Data.Entity.Utilities.DbContextExtensions.GetModel.AnonymousMethod__0(System.Xml.XmlWriter w)
System.Data.Entity.Utilities.DbContextExtensions.GetModel(System.Action<System.Xml.XmlWriter> writeXml)
System.Data.Entity.Utilities.DbContextExtensions.GetModel(System.Data.Entity.DbContext context)
System.Data.Entity.Internal.InternalContext.ModelMatches(System.Xml.Linq.XDocument model)
System.Data.Entity.Internal.ModelCompatibilityChecker.CompatibleWithModel(System.Data.Entity.Internal.InternalContext internalContext, System.Data.Entity.Internal.ModelHashCalculator modelHashCalculator, bool throwIfNoMetadata)
System.Data.Entity.Internal.InternalContext.CompatibleWithModel(bool throwIfNoMetadata)
System.Data.Entity.Database.CompatibleWithModel(bool throwIfNoMetadata)
System.Data.Entity.DropCreateDatabaseIfModelChanges<System.Data.Entity.TestModels.ArubaModel.ArubaContext>.InitializeDatabase(System.Data.Entity.TestModels.ArubaModel.ArubaContext context)
System.Data.Entity.Internal.InternalContext.CreateInitializationAction<System.Data.Entity.TestModels.ArubaModel.ArubaContext>.AnonymousMethod__b()
System.Data.Entity.Internal.InternalContext.PerformInitializationAction(System.Action action)
System.Data.Entity.Internal.InternalContext.PerformDatabaseInitialization()
System.Data.Entity.Internal.LazyInternalContext.InitializeDatabase.AnonymousMethod__4(System.Data.Entity.Internal.InternalContext c)
System.Data.Entity.Internal.RetryAction<System.Data.Entity.Internal.InternalContext>.PerformAction(System.Data.Entity.Internal.InternalContext input)
System.Data.Entity.Internal.LazyInternalContext.InitializeDatabaseAction(System.Action<System.Data.Entity.Internal.InternalContext> action)
System.Data.Entity.Internal.LazyInternalContext.InitializeDatabase()
System.Data.Entity.Internal.InternalContext.Initialize()
System.Data.Entity.Internal.InternalContext.GetEntitySetAndBaseTypeForType(System.Type entityType)
System.Data.Entity.Internal.Linq.InternalSet<System.Data.Entity.TestModels.ArubaModel.ArubaOwner>.Initialize()
System.Data.Entity.Internal.Linq.InternalSet<System.Data.Entity.TestModels.ArubaModel.ArubaOwner>.InternalContext.get()
System.Data.Entity.Infrastructure.DbQuery<System.Data.Entity.TestModels.ArubaModel.ArubaOwner>.System.Linq.IQueryable.Provider.get()
Comments: I am not sure if this is exactly the same issue but the stack trace looks very similar: http://entityframework.codeplex.com/discussions/434773