When trying to scaffold migrations for the following model:
```
public class Landmark
{
public int Id { get; set; }
public StandingStone MatchingStone { get; set; }
public Hold LocatedIn { get; set; }
}
public class StandingStone
{
public int Id { get; set; }
public Landmark MatchingLandnmark { get; set; }
public Hold LocatedIn { get; set; }
}
public class Hold
{
public int Id { get; set; }
public string Name { get; set; }
public ICollection<Landmark> Landmarks { get; set; }
}
public class MyContext : DbContext
{
public DbSet<Landmark> Landmarks { get; set; }
public DbSet<StandingStone> StandingStone { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
// table splitting
modelBuilder.Entity<Landmark>().ToTable("Landmarks");
modelBuilder.Entity<StandingStone>().ToTable("Landmarks");
// 1 -1 relationship needed for table splitting with different hierarchies
modelBuilder.Entity<Landmark>().HasRequired(l => l.MatchingStone).WithRequiredDependent(s => s.MatchingLandnmark);
modelBuilder.Entity<Landmark>().Property(p => p.Id).HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);
modelBuilder.Entity<StandingStone>().Property(p => p.Id).HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);
modelBuilder.Entity<Landmark>().MapToStoredProcedures();
modelBuilder.Entity<StandingStone>().MapToStoredProcedures();
}
}
```
I get the following exception:
__Unable to cast object of type 'System.Data.Entity.Core.Common.CommandTrees.DbUpdateCommandTree' to type 'System.Data.Entity.Core.Common.CommandTrees.DbInsertCommandTree'.
__ at System.Data.Entity.Migrations.Infrastructure.ModificationCommandTreeGenerator.<Generate>d__14`1.MoveNext()
at System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext()
at System.Linq.Enumerable.<CastIterator>d__b1`1.MoveNext()
at System.Linq.Buffer`1..ctor(IEnumerable`1 source)
at System.Linq.Enumerable.ToArray[TSource](IEnumerable`1 source)
at System.Data.Entity.Migrations.Infrastructure.EdmModelDiffer.GenerateFunctionBody[TCommandTree](StorageEntityTypeModificationFunctionMapping modificationFunctionMapping, Func`3 treeGenerator, Lazy`1 modificationCommandTreeGenerator, MigrationSqlGenerator migrationSqlGenerator, String functionName, String rowsAffectedParameterName)
at System.Data.Entity.Migrations.Infrastructure.EdmModelDiffer.GenerateInsertFunctionBody(StorageEntityTypeModificationFunctionMapping modificationFunctionMapping, Lazy`1 modificationCommandTreeGenerator, MigrationSqlGenerator migrationSqlGenerator)
at System.Data.Entity.Migrations.Infrastructure.EdmModelDiffer.<BuildCreateProcedureOperations>d__cd.MoveNext()
at System.Linq.Enumerable.<SelectManyIterator>d__31`3.MoveNext()
at System.Linq.Enumerable.<ConcatIterator>d__71`1.MoveNext()
at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)
at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)
at System.Data.Entity.Migrations.Infrastructure.EdmModelDiffer.Diff(ModelMetadata source, ModelMetadata target, Lazy`1 modificationCommandTreeGenerator, MigrationSqlGenerator migrationSqlGenerator)
at System.Data.Entity.Migrations.Infrastructure.EdmModelDiffer.Diff(XDocument sourceModel, XDocument targetModel, Lazy`1 modificationCommandTreeGenerator, MigrationSqlGenerator migrationSqlGenerator)
at System.Data.Entity.Migrations.DbMigrator.Scaffold(String migrationName, String namespace, Boolean ignoreChanges)
at System.Data.Entity.Migrations.Design.MigrationScaffolder.Scaffold(String migrationName, Boolean ignoreChanges)
at System.Data.Entity.Migrations.Design.ToolingFacade.ScaffoldRunner.Scaffold(MigrationScaffolder scaffolder)
at System.Data.Entity.Migrations.Design.ToolingFacade.ScaffoldRunner.Run()
at System.AppDomain.DoCallBack(CrossAppDomainDelegate callBackDelegate)
at System.AppDomain.DoCallBack(CrossAppDomainDelegate callBackDelegate)
at System.Data.Entity.Migrations.Design.ToolingFacade.Run(BaseRunner runner)
at System.Data.Entity.Migrations.Design.ToolingFacade.Scaffold(String migrationName, String language, String rootNamespace, Boolean ignoreChanges)
at System.Data.Entity.Migrations.AddMigrationCommand.Execute(String name, Boolean force, Boolean ignoreChanges)
at System.Data.Entity.Migrations.AddMigrationCommand.<>c__DisplayClass2.<.ctor>b__0()
at System.Data.Entity.Migrations.MigrationsDomainCommand.Execute(Action command)
```
public class Landmark
{
public int Id { get; set; }
public StandingStone MatchingStone { get; set; }
public Hold LocatedIn { get; set; }
}
public class StandingStone
{
public int Id { get; set; }
public Landmark MatchingLandnmark { get; set; }
public Hold LocatedIn { get; set; }
}
public class Hold
{
public int Id { get; set; }
public string Name { get; set; }
public ICollection<Landmark> Landmarks { get; set; }
}
public class MyContext : DbContext
{
public DbSet<Landmark> Landmarks { get; set; }
public DbSet<StandingStone> StandingStone { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
// table splitting
modelBuilder.Entity<Landmark>().ToTable("Landmarks");
modelBuilder.Entity<StandingStone>().ToTable("Landmarks");
// 1 -1 relationship needed for table splitting with different hierarchies
modelBuilder.Entity<Landmark>().HasRequired(l => l.MatchingStone).WithRequiredDependent(s => s.MatchingLandnmark);
modelBuilder.Entity<Landmark>().Property(p => p.Id).HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);
modelBuilder.Entity<StandingStone>().Property(p => p.Id).HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);
modelBuilder.Entity<Landmark>().MapToStoredProcedures();
modelBuilder.Entity<StandingStone>().MapToStoredProcedures();
}
}
```
I get the following exception:
__Unable to cast object of type 'System.Data.Entity.Core.Common.CommandTrees.DbUpdateCommandTree' to type 'System.Data.Entity.Core.Common.CommandTrees.DbInsertCommandTree'.
__ at System.Data.Entity.Migrations.Infrastructure.ModificationCommandTreeGenerator.<Generate>d__14`1.MoveNext()
at System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext()
at System.Linq.Enumerable.<CastIterator>d__b1`1.MoveNext()
at System.Linq.Buffer`1..ctor(IEnumerable`1 source)
at System.Linq.Enumerable.ToArray[TSource](IEnumerable`1 source)
at System.Data.Entity.Migrations.Infrastructure.EdmModelDiffer.GenerateFunctionBody[TCommandTree](StorageEntityTypeModificationFunctionMapping modificationFunctionMapping, Func`3 treeGenerator, Lazy`1 modificationCommandTreeGenerator, MigrationSqlGenerator migrationSqlGenerator, String functionName, String rowsAffectedParameterName)
at System.Data.Entity.Migrations.Infrastructure.EdmModelDiffer.GenerateInsertFunctionBody(StorageEntityTypeModificationFunctionMapping modificationFunctionMapping, Lazy`1 modificationCommandTreeGenerator, MigrationSqlGenerator migrationSqlGenerator)
at System.Data.Entity.Migrations.Infrastructure.EdmModelDiffer.<BuildCreateProcedureOperations>d__cd.MoveNext()
at System.Linq.Enumerable.<SelectManyIterator>d__31`3.MoveNext()
at System.Linq.Enumerable.<ConcatIterator>d__71`1.MoveNext()
at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)
at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)
at System.Data.Entity.Migrations.Infrastructure.EdmModelDiffer.Diff(ModelMetadata source, ModelMetadata target, Lazy`1 modificationCommandTreeGenerator, MigrationSqlGenerator migrationSqlGenerator)
at System.Data.Entity.Migrations.Infrastructure.EdmModelDiffer.Diff(XDocument sourceModel, XDocument targetModel, Lazy`1 modificationCommandTreeGenerator, MigrationSqlGenerator migrationSqlGenerator)
at System.Data.Entity.Migrations.DbMigrator.Scaffold(String migrationName, String namespace, Boolean ignoreChanges)
at System.Data.Entity.Migrations.Design.MigrationScaffolder.Scaffold(String migrationName, Boolean ignoreChanges)
at System.Data.Entity.Migrations.Design.ToolingFacade.ScaffoldRunner.Scaffold(MigrationScaffolder scaffolder)
at System.Data.Entity.Migrations.Design.ToolingFacade.ScaffoldRunner.Run()
at System.AppDomain.DoCallBack(CrossAppDomainDelegate callBackDelegate)
at System.AppDomain.DoCallBack(CrossAppDomainDelegate callBackDelegate)
at System.Data.Entity.Migrations.Design.ToolingFacade.Run(BaseRunner runner)
at System.Data.Entity.Migrations.Design.ToolingFacade.Scaffold(String migrationName, String language, String rootNamespace, Boolean ignoreChanges)
at System.Data.Entity.Migrations.AddMigrationCommand.Execute(String name, Boolean force, Boolean ignoreChanges)
at System.Data.Entity.Migrations.AddMigrationCommand.<>c__DisplayClass2.<.ctor>b__0()
at System.Data.Entity.Migrations.MigrationsDomainCommand.Execute(Action command)