Denna artikel är en spegelartikel om maskinöversättning, klicka här för att hoppa till originalartikeln.

Utsikt: 23619|Svar: 0

[Källa] EF-kod först attributsträngstyp lägger till indexegenskaper

[Kopiera länk]
Publicerad på 2017-11-23 18:47:15 | | | |
Om du vill skapa ett index och snabba upp frågan, lägg till attributet [Index] till attributet och generera automatiskt koden enligt följande:

Vi uppdaterar databasdatabasen och felet är följande:



System.Data.SqlClient.SqlException (0x80131904): tabell 'dbo. Kolumnen 'Telefon' i 'Konto' kan inte användas som nyckelkolumn i ett index.
   på System.Data.SqlClient.SqlConnection.OnError(SqlException-undantag, Boolean breakConnection, Action'1 wrapCloseInAction)
   på System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean 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)
   på 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, boolesk inRetry)
   In System.Data.SqlClient.SqlCommand.ExecuteNonQuery()
   I System.Data.Entity.Infrastructure.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 operation, TInterceptionContext interceptionKontext, Handling'3 utförs, Handling'3 utförs)
   I System.Data.Entity.Infrastructure.Interception.DbCommandDispatcher.NonQuery(DbCommand command, DbCommandInterceptionContext interceptionContext)
   I System.Data.Entity.Internal.InterceptableDbCommand.ExecuteNonQuery()
   I System.Data.Entity.Migrations.DbMigrator.ExecuteSql(MigrationStatement migrationStatement, DbConnection-anslutning, DbTransaktionstransaktion, DbInterceptionContext interceptionContext)
   I System.Data.Entity.Migrations.Infrastructure.MigratorLoggingDecorator.ExecuteSql(MigrationStatement migrationStatement, DbConnection-anslutning, DbTransaktionstransaktion , DbInterceptionContext interceptionContext)
   I System.Data.Entity.Migrations.DbMigrator.ExecuteStatementsInternal(IEnumerable'1 migrationStatements, DbConnection-anslutning, DbTransaktionstransaktion, DbInterceptionContext interceptionContext)
   I System.Data.Entity.Migrations.DbMigrator.ExecuteStatementsWithinTransaction(IEnumerable'1 migrationStatements, DbTransaction-transaktion, DbInterceptionContext interceptionContext)
   I System.Data.Entity.Migrations.DbMigrator.ExecuteStatementsWithinNewTransaction(IEnumerable'1 migrationStatements, DbConnection connection, DbInterceptionContext interceptionContext)
   I System.Data.Entity.Migrations.DbMigrator.ExecuteStatementsInternal(IEnumerable'1 migrationStatements, DbConnection-anslutning, 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()
   på System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute[TResult](Func'1 operation)
   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, Boolean nedgradering, boolesk auto)
   på System.Data.Entity.Migrations.DbMigrator.ApplyMigration(DbMigration migration, DbMigration lastMigration)
   på System.Data.Entity.Migrations.Infrastructure.MigratorLoggingDecorator.ApplyMigration(DbMigration migration, DbMigration lastMigration)
   på System.Data.Entity.Migrations.DbMigrator.Upgrade(IEnumerable'1 pendingMigrations, sträng targetMigrationId, sträng lastMigrationId)
   på System.Data.Entity.Migrations.Infrastructure.MigratorLoggingDecorator.Upgrade(IEnumerable'1 pendingMigrations, Sträng targetMigrationId, Sträng lastMigrationId)
   på System.Data.Entity.Migrations.DbMigrator.UpdateInternal(Sträng 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(Sträng targetMigration)
   I System.Data.Entity.Migrations.Infrastructure.MigratorBase.Update(Sträng 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
Felnummer:1919,Stat:1,Klass:16
Bords-dbo. Kolumnen 'Telefon' i 'Konto' kan inte användas som nyckelkolumn i ett index.


Anledningen till felet är att alla strängegenskaper för ef som standard är av typen NVARCHAR(Max),

Lösningen är följande:

Utför strängens längd





Som visas på bilden är skapandet lyckat!





Föregående:Hur man lagrar strängar längre än 4000 tecken i NHibernate 3.3
Nästa:C# Scramble-arrayer
Friskrivning:
All programvara, programmeringsmaterial eller artiklar som publiceras av Code Farmer Network är endast för lärande- och forskningsändamål; Ovanstående innehåll får inte användas för kommersiella eller olagliga ändamål, annars kommer användarna att bära alla konsekvenser. Informationen på denna sida kommer från internet, och upphovsrättstvister har inget med denna sida att göra. Du måste helt radera ovanstående innehåll från din dator inom 24 timmar efter nedladdning. Om du gillar programmet, vänligen stöd äkta programvara, köp registrering och få bättre äkta tjänster. Om det finns något intrång, vänligen kontakta oss via e-post.

Mail To:help@itsvse.com