Acest articol este un articol oglindă al traducerii automate, vă rugăm să faceți clic aici pentru a sări la articolul original.

Vedere: 23619|Răspunde: 0

[Sursă] Codul EF primul tip de atribut adaugă proprietăți de index

[Copiază linkul]
Postat pe 23.11.2017 18:47:15 | | | |
Dacă vrei să creezi un index și să accelerezi interogarea, adaugă atributul [Index] la atribut și generează automat codul astfel:

Actualizăm baza de date a bazei de date și eroarea este următoarea:



System.Data.SqlClient.SqlException (0x80131904): table 'dbo. Coloana 'Phone' din 'Account' nu poate fi folosită ca coloană cheie într-un index.
   la System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action'1 wrapCloseInAction)
   la System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action'1 wrapCloseInAction)
   at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, boolean callerHasConnectionLock, Boolean asyncClose)
   În System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)
   la System.Data.SqlClient.SqlCommand.RunExecuteNonQueryTds(String methodName, Boolean async, timeout Int32, Boolean asyncWrite)
   În System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(TaskCompletionSource'1 completion, String methodName, Boolean sendToPipe, Int32 timeout, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry)
   În System.Data.SqlClient.SqlCommand.ExecuteNonQuery()
   În System.Data.Entity.Infrastructure.Interception.DbCommandDispatcher. <NonQuery>b__0(DbCommand t, DbCommandInterceptionContext'1 c)
   În System.Data.Entity.Infrastructure.Interception.InternalDispatcher'1.Dispatch[TTarget,TInterceptionContext,TResult](TTarget țintă, Func'3 operațiune, TintterceptionContext interceptionContext, Acțiune'3 executată, Acțiune'3 executată)
   În System.Data.Entity.Infrastructure.Interception.DbCommandDispatcher.NonQuery(comanda DbComandă, DbComandăInterceptionContext interceptionContext)
   În System.Data.Entity.Internal.InterceptableDbCommand.ExecuteNonQuery()
   În System.Data.Entity.Migrations.DbMigrator.ExecuteSQL (MigrationStatement migrationStatement, conexiune DbConnection, tranzacție DbTransaction, DbInterceptionContext interceptionContext)
   În System.Data.Entity.Migrations.Infrastructure.MigratorLoggingDecorator.ExecuteSQL (MigrationStatement migrationStatement, conexiune DbConnection, tranzacție DbTransaction , DbInterceptionContext interceptionContext)
   În System.Data.Entity.Migrations.DbMigrator.ExecuteStatementsInternal(IEnumerable'1 migrationStatements, conexiune DbConnection, tranzacție DbTransaction, DbInterceptionContext interceptionContext)
   În System.Data.Entity.Migrations.DbMigrator.ExecuteStatementsWithinTransaction(IEnumerable'1 migrationStatements, DbTransaction transaction, DbInterceptionContext interceptionContext)
   În System.Data.Entity.Migrations.DbMigrator.ExecuteStatementsWithinNewTransaction(IEnumerable'1 migrationStatements, conexiune DbConnection, DbInterceptionContext interceptionContext)
   În System.Data.Entity.Migrations.DbMigrator.ExecuteStatementsInternal (IEnumerable'1 migrațieStatements, conexiune DbConexiune, DbInterceptionContext interceptionContext)
   la System.Data.Entity.Migrations.DbMigrator.ExecuteStatementsInternal(IEnumerable'1 migrationStatements, conexiune DbConnection)
   la System.Data.Entity.Migrations.DbMigrator.<>c__DisplayClass32. <ExecuteStatements>b__30()
   În System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.<>c__DisplayClass1. <Execute>b__0()
   la System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute[TResult](Func'1 operation)
   În System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute(Action operation)
   În System.Data.Entity.Migrations.DbMigrator.ExecuteStatements(IEnumerable'1 migrationStatements, DbTransactionExistingTransaction)
   În System.Data.Entity.Migrations.DbMigrator.ExecuteStatements(IEnumerable'1 migrationStatements)
   la System.Data.Entity.Migrations.Infrastructure.MigratorBase.ExecuteStatements(IEnumerable'1 migrationStatements)
   În System.Data.Entity.Migrations.DbMigrator.ExecuteOperations(String migrationId, VersionedModel targetModel, IEnumerable'1 operations, IEnumerable'1 systemOperations, Boolean retrogradare, automat boolean)
   la System.Data.Entity.Migrations.DbMigrator.ApplyMigration(DbMigration migration, DbMigration lastMigration)
   la System.Data.Entity.Migrations.Infrastructure.MigratorLoggingDecorator.ApplyMigration(DbMigration migration, DbMigration last Migration)
   la System.Data.Entity.Migrations.DbMigrator.Upgrade(IEnumerable'1 pendingMigrations, String targetMigrationId, String lastMigrationId)
   la System.Data.Entity.Migrations.Infrastructure.MigratorLoggingDecorator.Upgrade(IEnumerable'1 pending migrations, StringstringTargetMigrationId, String lastMigrationId)
   la System.Data.Entity.Migrations.DbMigrator.UpdateInternal(String targetMigration)
   În System.Data.Entity.Migrations.DbMigrator.<>c__DisplayClasse. <Update>b__d()
   la System.Data.Entity.Migrations.DbMigrator.EnsureDatabaseExists(Acțiunea trebuieSuccesToKeepDatabase)
   la System.Data.Entity.Migrations.Infrastructure.MigratorBase.EnsureDatabaseExists(Acțiunea trebuieSuccesPăstraBaza de Date)
   la System.Data.Entity.Migrations.DbMigrator.Update(String targetMigration)
   În System.Data.Entity.Migrations.Infrastructure.MigratorBase.Update(String targetMigration)
   la System.Data.Entity.Migrations.Design.ToolingFacade.UpdateRunner.RunCore()
   În System.Data.Entity.Migrations.Design.ToolingFacade.BaseRunner.Run()
ClientConnectionId:2b5f614b-caab-4be6-bc1b-a813b7356739
Număr de eroare: 1919, Stat: 1, Clasă: 16
Dbo de masă. Coloana 'Phone' din 'Account' nu poate fi folosită ca coloană cheie într-un index.


Motivul erorii este că toate proprietățile șirurilor ef-ului sunt de tip NVARCHAR(Max) în mod implicit,

Soluția este următoarea:

Executați lungimea șirului





Așa cum se vede în imagine, creația este un succes!





Precedent:Cum să stochezi șiruri mai lungi de 4000 de caractere în NHibernate 3.3
Următor:Array-uri de amestecare în C#
Disclaimer:
Tot software-ul, materialele de programare sau articolele publicate de Code Farmer Network sunt destinate exclusiv scopurilor de învățare și cercetare; Conținutul de mai sus nu va fi folosit în scopuri comerciale sau ilegale, altfel utilizatorii vor suporta toate consecințele. Informațiile de pe acest site provin de pe Internet, iar disputele privind drepturile de autor nu au legătură cu acest site. Trebuie să ștergi complet conținutul de mai sus de pe calculatorul tău în termen de 24 de ore de la descărcare. Dacă îți place programul, te rugăm să susții software-ul autentic, să cumperi înregistrarea și să primești servicii autentice mai bune. Dacă există vreo încălcare, vă rugăm să ne contactați prin e-mail.

Mail To:help@itsvse.com