Quantcast
Channel: Entity Framework
Viewing all articles
Browse latest Browse all 10318

Closed Issue: CF Stored Procs :: error when creating migrations that map to stored procedures with inheritance and Many-Many relationship [1252]

$
0
0
Probably related to (i.e. caused by) https://entityframework.codeplex.com/workitem/1251, but filing just in case because experience is slightly different.

Create the following model:

```
public class Order
{
public int Id { get; set; }

public ICollection<Product> Products { get; set; }
}

public class InternationalOrder : Order
{
public string Country { get; set; }
}

public class Product
{
public int ProductId { get; set; }

public ICollection<Order> Orders { get; set; }
}

public class InheritanceContext : DbContext
{
public DbSet<Order> Orders { get; set; }
public DbSet<Product> Products { get; set; }

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Order>().MapToStoredProcedures();
modelBuilder.Entity<Order>().HasMany(o => o.Products).WithMany().MapToStoredProcedures();
}
}

```

Enable-Migrations
Add-Migration Mig1

This throws the following exception:

__Index was out of range. Must be non-negative and less than the size of the collection.
Parameter name: index
__ at System.ThrowHelper.ThrowArgumentOutOfRangeException()
at System.Data.Entity.SqlServer.SqlGen.DmlSqlGenerator.ExpressionTranslator.RegisterMemberValue(DbExpression propertyExpression, DbExpression value)
at System.Data.Entity.SqlServer.SqlGen.DmlSqlGenerator.GenerateInsertSql(DbInsertCommandTree tree, SqlGenerator sqlGenerator, List`1& parameters, Boolean generateReturningSql, Boolean upperCaseKeywords, Boolean createParameters)
at System.Data.Entity.SqlServer.SqlGen.DmlFunctionSqlGenerator.GenerateInsert(ICollection`1 commandTrees)
at System.Data.Entity.SqlServer.SqlServerMigrationSqlGenerator.GenerateFunctionSql(ICollection`1 commandTrees, String rowsAffectedParameter)
at System.Data.Entity.SqlServer.SqlServerMigrationSqlGenerator.GenerateProcedureBody(ICollection`1 commandTrees, String rowsAffectedParameter, String providerManifestToken)
at System.Data.Entity.Migrations.Infrastructure.EdmModelDiffer.GenerateFunctionBody[TCommandTree](MigrationSqlGenerator migrationSqlGenerator, String rowsAffectedParameterName, TCommandTree[] commandTrees)
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)

Comments: Verified, closing

Viewing all articles
Browse latest Browse all 10318

Trending Articles