Este artículo es un artículo espejo de traducción automática, por favor haga clic aquí para saltar al artículo original.

Vista: 23619|Respuesta: 0

[Fuente] El código EF primero el tipo de cadena de atributos añade propiedades de índice

[Copiar enlace]
Publicado en 23/11/2017 18:47:15 | | | |
Si quieres crear un índice y acelerar la consulta, añade el atributo [Index] al atributo y genera automáticamente el código de la siguiente manera:

Actualizamos la base de datos y el error es el siguiente:



System.Data.SqlClient.SqlException (0x80131904): tabla 'dbo. La columna 'Teléfono' en 'Cuenta' no puede usarse como columna clave en un índice.
   at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action'1 wrapCloseInAction)
   en System.Data.SqlClient.SqlInternalConnection.OnError(Excepción SqlException, Boolean breakConnection, Acción'1 wrapCloseInAction)
   at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, boolean callerHasConnectionLock, Boolean asyncClose)
   En 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, async booleano, timeout Int32, asyncWrite booleano)
   En System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(TaskCompletionSource'1 completion, String methodName, Boolean sendToPipe, Int32 timeout, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry)
   En System.Data.SqlClient.SqlCommand.ExecuteNonQuery()
   En System.Data.Entity.Infrastructure.Interception.DbCommandDispatcher. <NonQuery>b__0(DbCommand t, DbCommandInterceptionContext'1 c)
   En System.Data.Entity.Infrastructure.Interception.InternalDispatcher'1.Dispatch[TTarget,TInterceptionContext,TResult](TTarget objetivo, operación Func'3, TintterceptionContext interceptionContext, Acción'3 ejecutándose, Acción'3 ejecutada)
   En System.Data.Entity.Infrastructure.Interception.DbCommandDispatcher.NonQuery(comando DbCommand, DbCommandInterceptionContext interceptionContext)
   En System.Data.Entity.Internal.InterceptableDbCommand.ExecuteNonQuery()
   En System.Data.Entity.Migrations.DbMigrator.ExecuteSQL (MigrationInstruction migrationStatement, conexión DbConnection, transacción DbTransaction, DbInterceptionContext interceptionContexto)
   En System.Data.Entity.Migrations.Infrastructure.MigratorLoggingDecorator.ExecuteSql(MigrationStatement migrationStatement, conexión DbConnection, transacción DbTransaction , DbInterceptionContexto interceptionContexto)
   En System.Data.Entity.Migrations.DbMigrator.ExecuteStatementsInternal(IEnumerable'1 migrationStatements, conexión DbConnection, transacción DbTransaction, DbInterceptionContexto interceptionContexto)
   En System.Data.Entity.Migrations.DbMigrator.ExecuteStatementWithinTransaction(IEnumerable'1 migrationStatements, transacción DbTransaction, DbInterceptionContext interceptionContexto)
   En System.Data.Entity.Migrations.DbMigrator.ExecuteStatementWithinNewTransaction(IEnumerable'1 migrationStatements, conexión DbConnection, DbInterceptionContext interceptionContexto)
   En System.Data.Entity.Migrations.DbMigrator.ExecuteStatementsInternal(IEnumerable'1 migrationStatements, DbConnection connection, DbInterceptionContext interceptionContext)
   en System.Data.Entity.Migrations.DbMigrator.ExecuteStatementsInternal(IEnumerable'1 migrationStatements, conexión DbConnection)
   en System.Data.Entity.Migrations.DbMigrator.<>c__DisplayClass32. <ExecuteStatements>b__30()
   En System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.<>c__DisplayClass1. <Execute>b__0()
   en System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute[TResult](Func'1 operation)
   En System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute(Action operation)
   En System.Data.Entity.Migrations.DbMigrator.ExecuteStatements(IEnumerable'1 migrationStatements, DbTransactionExistingTransaction)
   En System.Data.Entity.Migrations.DbMigrator.ExecuteStatements(IEnumerable'1 migrationStatements)
   en System.Data.Entidad.Migraciones.Infraestructura.MigratorBase.EjecutarSentencias(IEnumerable'1 migrationStatements)
   En System.Data.Entity.Migrations.DbMigrator.ExecuteOperations(String migrationId, VersionedModel targetModel, IEnumerable'1 operations, IEnumerable'1 systemOperations, Boolean degradación, auto booleano)
   en System.Data.Entity.Migrations.DbMigrator.ApplyMigration(DbMigration migration, DbMigration lastMigration)
   en System.Data.Entity.Migrations.Infrastructure.MigratorLoggingDecorator.ApplyMigration(DbMigration migration, DbMigration lastMigration)
   en System.Data.Entity.Migrations.DbMigrator.Upgrade(IEnumerable'1 pendingMigrations, String targetMigrationId, String lastMigrationId)
   en System.Data.Entity.Migrations.Infrastructure.MigratorLoggingDecorator.Upgrade(IEnumerable'1 pendingMigrations, String targetMigrationId, String lastMigrationId)
   en System.Data.Entity.Migrations.DbMigrator.UpdateInternal(String targetMigration)
   En System.Data.Entity.Migrations.DbMigrator.<>c__DisplayClasse. <Update>b__d()
   en System.Data.Entity.Migrations.DbMigrator.EnsureDatabaseExists(Action mustSucceedToKeepDatabase)
   en System.Data.Entity.Migrations.Infrastructure.MigratorBase.EnsureDatabaseExists(Acción debeSucederDeMantenerDeDatabase)
   en System.Data.Entity.Migrations.DbMigrator.Update(String targetMigration)
   En System.Data.Entity.Migrations.Infrastructure.MigratorBase.Update(String targetMigration)
   en System.Data.Entity.Migrations.Design.ToolingFacade.UpdateRunner.RunCore()
   En System.Data.Entity.Migrations.Design.ToolingFacade.BaseRunner.Run()
ClientConnectionId:2b5f614b-caab-4be6-bc1b-a813b7356739
Número de error: 1919, Estado: 1, Clase: 16
Dbo de mesa. La columna 'Teléfono' en 'Cuenta' no puede usarse como columna clave en un índice.


La razón del error es que todas las propiedades de la cadena ef son de tipo NVARCHAR(Max) por defecto,

La solución es la siguiente:

Ejecuta la longitud de la cuerda





Como se muestra en la imagen, ¡la creación es un éxito!





Anterior:Cómo almacenar cadenas de más de 4000 caracteres en NHibernate 3.3
Próximo:Matrices de encriptación en C#
Renuncia:
Todo el software, materiales de programación o artículos publicados por Code Farmer Network son únicamente para fines de aprendizaje e investigación; El contenido anterior no se utilizará con fines comerciales o ilegales; de lo contrario, los usuarios asumirán todas las consecuencias. La información de este sitio proviene de Internet, y las disputas de derechos de autor no tienen nada que ver con este sitio. Debes eliminar completamente el contenido anterior de tu ordenador en un plazo de 24 horas desde la descarga. Si te gusta el programa, por favor apoya el software genuino, compra el registro y obtén mejores servicios genuinos. Si hay alguna infracción, por favor contáctanos por correo electrónico.

Mail To:help@itsvse.com