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

Edited Issue: Stored Proc :: slightly misleading message when trying to map to stored procs, override Result for Update function, for Identity column [1325]

$
0
0
When mapping to stored procedures in CodeFirst, we support overriding results for column names that are database-generated. We have 2 different behaviors here:
- for Insert we support identity and computed columns,
- for Update we support just computed columns.

However the exception seems to be shared. E.g. for the following model:

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

[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int IdentityColumn { get; set; }
}

public class MyContext : DbContext
{
public DbSet<Blog> Blogs { get; set; }

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Blog>().MapToStoredProcedures(m => m.Update(c => c.Result(b => b.IdentityColumn, "MyIdentity")));
}
}
```

We get the following exception when trying to scaffold a migration:

__A result binding for the property 'IdentityColumn' was not found on the modification function 'Blog_Update'. Ensure that the property is database generated.
__ at System.Data.Entity.ModelConfiguration.Configuration.ModificationFunctionConfiguration.ConfigureResultBindings(StorageModificationFunctionMapping modificationFunctionMapping)
at System.Data.Entity.ModelConfiguration.Configuration.ModificationFunctionConfiguration.Configure(StorageModificationFunctionMapping modificationFunctionMapping, DbProviderManifest providerManifest)
at System.Data.Entity.ModelConfiguration.Configuration.ModificationFunctionsConfiguration.Configure(StorageEntityTypeModificationFunctionMapping modificationFunctionMapping, DbProviderManifest providerManifest)
at System.Data.Entity.ModelConfiguration.Configuration.Types.EntityTypeConfiguration.ConfigureModificationFunctions(DbDatabaseMapping databaseMapping, EntityType entityType, DbProviderManifest providerManifest)
at System.Data.Entity.ModelConfiguration.Configuration.Types.EntityTypeConfiguration.Configure(EntityType entityType, DbDatabaseMapping databaseMapping, DbProviderManifest providerManifest)
at System.Data.Entity.ModelConfiguration.Configuration.ModelConfiguration.ConfigureEntityTypes(DbDatabaseMapping databaseMapping, DbProviderManifest providerManifest)
at System.Data.Entity.ModelConfiguration.Configuration.ModelConfiguration.Configure(DbDatabaseMapping databaseMapping, DbProviderManifest providerManifest)
at System.Data.Entity.DbModelBuilder.Build(DbProviderManifest providerManifest, DbProviderInfo providerInfo)
at System.Data.Entity.DbModelBuilder.Build(DbConnection providerConnection)
at System.Data.Entity.Internal.LazyInternalContext.CreateModel(LazyInternalContext internalContext)
at System.Data.Entity.Internal.RetryLazy`2.GetValue(TInput input)
at System.Data.Entity.Internal.LazyInternalContext.InitializeContext()
at System.Data.Entity.Internal.LazyInternalContext.get_CodeFirstModel()
at System.Data.Entity.Infrastructure.EdmxWriter.WriteEdmx(DbContext context, XmlWriter writer)
at System.Data.Entity.Utilities.DbContextExtensions.<>c__DisplayClass1.<GetModel>b__0(XmlWriter w)
at System.Data.Entity.Utilities.DbContextExtensions.GetModel(Action`1 writeXml)
at System.Data.Entity.Utilities.DbContextExtensions.GetModel(DbContext context)
at System.Data.Entity.Migrations.DbMigrator..ctor(DbMigrationsConfiguration configuration, DbContext usersContext)
at System.Data.Entity.Migrations.DbMigrator..ctor(DbMigrationsConfiguration configuration)
at System.Data.Entity.Migrations.Design.MigrationScaffolder..ctor(DbMigrationsConfiguration migrationsConfiguration)
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)

This is not accurate, since the property *is* database generated. We should consider splitting the exception, to indicate that for Insert we only support DatabaseGenerationOption.Computed

Viewing all articles
Browse latest Browse all 10318

Latest Images

Trending Articles



Latest Images

<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>