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

Trending Articles



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