Denne artikkelen er en speilartikkel om maskinoversettelse, vennligst klikk her for å hoppe til originalartikkelen.

Utsikt: 23619|Svare: 0

[Kilde] EF-kode første attributtstrengtype legger til indeksegenskaper

[Kopier lenke]
Publisert på 23.11.2017 18:47:15 | | | |
Hvis du vil lage en indeks og gjøre spørringen raskere, legg til attributtet [Index]-attributtet og generer automatisk koden som følger:

Vi oppdaterer databasen, og feilen er som følger:



System.Data.SqlClient.SqlException (0x80131904): table 'dbo. Kolonnen 'Telefon' i 'Konto' kan ikke brukes som nøkkelkolonne i en indeks.
   på System.Data.SqlClient.SqlConnection.OnError(SqlException-unntak, boolsk breakConnection, Action'1 wrapCloseInAction)
   på System.Data.SqlClient.SqlInternalConnection.OnError(SqlException-unntak, boolsk breakConnection, Action'1 wrapCloseInAction)
   at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)
   I 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, Boolean async, Int32 timeout, Boolean asyncWrite)
   In System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(TaskCompletionSource'1 completion, String methodName, Boolean sendToPipe, Int32 timeout, Boolean& usedCache, Boolean asyncWrite, boolsk inRetry)
   In System.Data.SqlClient.SqlCommand.ExecuteNonQuery()
   I System.Data.Entitet.Infrastruktur.Interception.DbCommandDispatcher. <NonQuery>b__0(DbCommand t, DbCommandInterceptionContext'1 c)
   I System.Data.Entity.Infrastructure.Interception.InternalDispatcher'1.Dispatch[TTarget,TInterceptionContext,TResult](TTarget target, Func'3 operasjon, TInterceptionContext interceptionContext, Action'3 utføres, Action'3 utført)
   I System.Data.Entity.Infrastructure.Interception.DbCommandDispatcher.NonQuery(DbCommand kommando, DbCommandInterceptionContext interceptionContext)
   I System.Data.Entity.Internal.InterceptableDbCommand.ExecuteNonQuery()
   I System.Data.Entity.Migrations.DbMigrator.ExecuteSql(MigrationStatement migrationStatement, DbConnection connection, DbTransaction-transaksjon, DbInterceptionContext avskjæringKontekst)
   I System.Data.Entity.Migrations.Infrastructure.MigratorLoggingDecorator.ExecuteSql(MigrationStatement migrationStatement, DbConnection connection, DbTransaction-transaksjon , DbInterceptionContext interceptionContext)
   I System.Data.Entity.Migrations.DbMigrator.ExecuteStatementsInternal(IEnumerable'1 migrationStatements, DbConnection connection, DbTransaction-transaksjon, DbInterceptionContext interceptionContext)
   I System.Data.Entity.Migrations.DbMigrator.ExecuteStatementsWithinTransaction(IEnumerable'1 migrationStatements, DbTransaction-transaksjon, DbInterceptionContext avskjæringKontekst)
   I System.Data.Entity.Migrations.DbMigrator.ExecuteStatementsWithinNewTransaction(IEnumerable'1 migrationStatements, DbConnection connection, DbInterceptionContext avskjæringKontekst)
   I System.Data.Entity.Migrations.DbMigrator.ExecuteStatementsInternal(IEnumerable'1 migrationStatements, DbConnection connection, DbInterceptionContext interceptionContext)
   på System.Data.Entity.Migrations.DbMigrator.ExecuteStatementsInternal(IEnumerable'1 migrationStatements, DbConnection connection)
   på System.Data.Entity.Migrations.DbMigrator.<>c__DisplayClass32. <ExecuteStatements>b__30()
   I System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.<>c__DisplayClass1. <Execute>b__0()
   at System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute[TResult](Func'1 operasjon)
   I System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute(Action operation)
   I System.Data.Entity.Migrations.DbMigrator.ExecuteStatements(IEnumerable'1 migrationStatements, DbTransaction existingTransaction)
   I System.Data.Entity.Migrations.DbMigrator.ExecuteStatements(IEnumerable'1 migrationStatements)
   på System.Data.Entity.Migrations.Infrastructure.MigratorBase.ExecuteStatements(IEnumerable'1 migrationStatements)
   I System.Data.Entity.Migrations.DbMigrator.ExecuteOperations(String migrationId, VersionedModel targetModel, IEnumerable'1 operations, IEnumerable'1 systemOperations, boolsk nedgradering, boolsk bil)
   på System.Data.Entity.Migrations.DbMigrator.ApplyMigration(DbMigration migration, DbMigration lastMigration)
   på System.Data.Entity.Migrations.Infrastructure.MigratorLoggingDecorator.ApplyMigration(DbMigration migrasjon, DbMigration lastMigration)
   på System.Data.Entity.Migrations.DbMigrator.Upgrade(IEnumerable'1 pendingMigrations, streng targetMigrationId, streng lastMigrationId)
   på System.Data.Entity.Migrations.Infrastructure.MigratorLoggingDecorator.Upgrade(IEnumerable'1 pendingMigrations, streng targetMigrationId, streng lastMigrationId)
   på System.Data.Entity.Migrations.DbMigrator.UpdateInternal(Streng targetMigration)
   I System.Data.Entity.Migrations.DbMigrator.<>c__DisplayClasse. <Update>b__d()
   på System.Data.Entity.Migrations.DbMigrator.EnsureDatabaseExists(Action mustSucceedToKeepDatabase)
   på System.Data.Entity.Migrations.Infrastructure.MigratorBase.EnsureDatabaseExists(Action mustSucceedToKeepDatabase)
   på System.Data.Entity.Migrations.DbMigrator.Update(String targetMigration)
   I System.Data.Entity.Migrations.Infrastructure.MigratorBase.Update(String targetMigration)
   på System.Data.Entity.Migrations.Design.ToolingFacade.UpdateRunner.RunCore()
   I System.Data.Entity.Migrations.Design.ToolingFacade.BaseRunner.Run()
ClientConnectionId:2b5f614b-caab-4be6-bc1b-a813b7356739
Feilnummer: 1919, Stat: 1, Klasse: 16
Bord-dbo. Kolonnen 'Telefon' i 'Konto' kan ikke brukes som nøkkelkolonne i en indeks.


Årsaken til feilen er at alle strengegenskaper til ef som standard er av typen NVARCHAR(Max),

Løsningen er som følger:

Utfør lengden på strengen





Som vist på bildet, er skapelsen vellykket!





Foregående:Hvordan lagre strenger lengre enn 4000 tegn i NHibernate 3.3
Neste:C# scramble arrays
Ansvarsfraskrivelse:
All programvare, programmeringsmateriell eller artikler publisert av Code Farmer Network er kun for lærings- og forskningsformål; Innholdet ovenfor skal ikke brukes til kommersielle eller ulovlige formål, ellers skal brukerne bære alle konsekvenser. Informasjonen på dette nettstedet kommer fra Internett, og opphavsrettstvister har ingenting med dette nettstedet å gjøre. Du må fullstendig slette innholdet ovenfor fra datamaskinen din innen 24 timer etter nedlasting. Hvis du liker programmet, vennligst støtt ekte programvare, kjøp registrering, og få bedre ekte tjenester. Hvis det foreligger noen krenkelse, vennligst kontakt oss på e-post.

Mail To:help@itsvse.com