Cet article est un article miroir de traduction automatique, veuillez cliquer ici pour accéder à l’article original.

Vue: 23619|Répondre: 0

[Source] Le type de chaîne d’attributs d’un code EF ajoute des propriétés d’index

[Copié le lien]
Publié sur 23/11/2017 18:47:15 | | | |
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 !





Précédent:Comment stocker des chaînes de caractères supérieures à 4000 caractères dans NHibernate 3.3
Prochain:Tableaux brouillés en C#
Démenti:
Tous les logiciels, supports de programmation ou articles publiés par Code Farmer Network sont uniquement destinés à l’apprentissage et à la recherche ; Le contenu ci-dessus ne doit pas être utilisé à des fins commerciales ou illégales, sinon les utilisateurs assumeront toutes les conséquences. Les informations sur ce site proviennent d’Internet, et les litiges de droits d’auteur n’ont rien à voir avec ce site. Vous devez supprimer complètement le contenu ci-dessus de votre ordinateur dans les 24 heures suivant le téléchargement. Si vous aimez le programme, merci de soutenir un logiciel authentique, d’acheter l’immatriculation et d’obtenir de meilleurs services authentiques. En cas d’infraction, veuillez nous contacter par e-mail.

Mail To:help@itsvse.com