Si vous souhaitez créer un index et accélérer la requête, ajoutez l’attribut [Index] à l’attribut et générez automatiquement le code comme suit :
Nous mettons à jour la base de données et l’erreur est la suivante :
System.Data.SqlClient.SqlException (0x80131904) : table 'dbo. La colonne « Téléphone » dans « Compte » ne peut pas être utilisée comme colonne clé dans un index. at System.Data.SqlClient.SqlConnection.OnError (Exception SqlException, Boolean breakConnection, Action'1 wrapCloseInAction) at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action'1 wrapCloseInAction) at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, boolean callerHasConnectionLock, Boolean asyncClose) Dans System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady) at System.Data.SqlClient.SqlCommand.RunExecuteNonQueryTds(String methodName, asynchrone booléen, timeout Int32, asyncWrite booléen) In System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(TaskCompletionSource'1 completion, String methodName, Boolean sendToPipe, Int32 timeout, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry) Dans System.Data.SqlClient.SqlCommand.ExecuteNonQuery() Dans System.Data.Entity.Infrastructure.Interception.DbCommandDispatcher. <NonQuery>b__0(DbCommandeT t, DbCommandInterceptionContexte'1 c) Dans System.Data.Entity.Infrastructure.Interception.InternalDispatcher'1.Dispatch[TTarget,TInterceptionContext,TResult](TTarget cible, opération Func'3, TInterceptionContexte interceptionContext, Action'3 exécutée, Action'3 exécutée) Dans System.Data.Entity.Infrastructure.Interception.DbCommandDispatcher.NonQuery(DbCommandcommand, DbCommandInterceptionContexteInterceptionContexteInterceptionContexte) Dans System.Data.Entity.Internal.InterceptableDbCommand.ExecuteNonQuery() Dans System.Data.Entity.Migrations.DbMigrator.ExecuteSQL (MigrationStatementMigrationStatement, DbConnection connection, DbTransaction transaction, DbInterceptionContext interceptionContexte) Dans System.Data.Entity.Migrations.Infrastructure.MigratorLoggingDecorator.ExecuteSQL (MigrationStatement migrationStatement, DbConnection connection, DbTransaction transaction , DbDInterceptionContexteInterceptionContexte) Dans System.Data.Entity.Migrations.DbMigrator.ExecuteStatementsInternal(IEnumerable'1 migrationStatements, connexion DbConnection, transaction DbTransaction, DbInterceptionContexteInterceptionContexte) Dans System.Data.Entity.Migrations.DbMigrator.ExecuteStatementsWithinTransaction(IEnumerable'1 migrationStatements, DbTransaction transaction, DbInterceptionContext interceptionContexte) Dans System.Data.Entity.Migrations.DbMigrator.ExecuteStatementsWithinNewTransaction(IEnumerable'1 migrationStatements, connexion DbConnection, DbInterceptionContext interceptionContexte) Dans System.Data.Entity.Migrations.DbMigrator.ExecuteStatementsInternal (IEnumerable'1 migrationStatements, connexion DbConnection, DbInterceptionContexteInterceptionContexteInterceptionContexte) at System.Data.Entity.Migrations.DbMigrator.ExecuteStatementsInternal(IEnumerable'1 migrationStatements, connexion DbConnection) sur System.Data.Entity.Migrations.DbMigrator.<>c__DisplayClass32. <ExecuteStatements>b__30() Dans System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.<>c__DisplayClass1. <Execute>b__0() at System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute[TResult](Func'1 operation) Dans System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute(Action operation) Dans System.Data.Entity.Migrations.DbMigrator.ExecuteStatements (IEnumerable'1 migrationStatements, DbTransactionExistingTransaction) Dans System.Data.Entity.Migrations.DbMigrator.ExecuteStatements(IEnumerable'1 migrationStatements) sur System.Data.Entity.Migrations.Infrastructure.MigratorBase.ExecuteStatements(IEnumerable'1 migrationStatements) Dans System.Data.Entity.Migrations.DbMigrator.ExecuteOperations(String migrationId, VersionedModel targetModel, IEnumerable'1 operations, IEnumerable'1 systemOperations, Boolean rétrogradation, auto booléen) sur System.Data.Entity.Migrations.DbMigrator.ApplyMigration(DbMigration migration, DbMigration dernièreMigration) sur System.Data.Entity.Migrations.Infrastructure.MigratorLoggingDecorator.ApplyMigration(DbMigration migration, DbMigration dernièreMigration) at System.Data.Entity.Migrations.DbMigrator.Upgrade(IEnumerable'1 pending Migrations, chaîne targetMigrationId, chaîne lastMigrationId) at System.Data.Entity.Migrations.Infrastructure.MigratorLoggingDecorator.Upgrade(IEnumerable'1 pendingMigrations, Chaîne targetMigrationId, Chaîne lastMigrationId) sur System.Data.Entity.Migrations.DbMigrator.UpdateInternal(String targetMigration) Dans System.Data.Entity.Migrations.DbMigrator.<>c__DisplayClasse. <Update>b__d() sur System.Data.Entity.Migrations.DbMigrator.EnsureDatabaseExists(Action doitSucceedToKeepDatabase) sur System.Data.Entity.Migrations.Infrastructure.MigratorBase.EnsureDatabaseExists(Action doitSucceedToKeepDatabase) sur System.Data.Entity.Migrations.DbMigrator.Update(String targetMigration) Dans System.Data.Entity.Migrations.Infrastructure.MigratorBase.Update(String targetMigration) sur System.Data.Entity.Migrations.Design.OutilsFacade.UpdateRunner.RunCore() Dans System.Data.Entity.Migrations.Design.ToolingFacade.BaseRunner.Run()
ClientConnectionId:2b5f614b-caab-4be6-bc1b-a813b7356739 Numéro d’erreur : 1919, État : 1, Classe : 16 Table 'dbo. La colonne « Téléphone » dans « Compte » ne peut pas être utilisée comme colonne clé dans un index.
La raison de l’erreur est que toutes les propriétés de la chaîne ef sont par défaut de type NVARCHAR(Max),
La solution est la suivante :
Exécutez la longueur de la corde
Comme on le voit sur l’image, la création est un succès !
|