Ця стаття є дзеркальною статтею машинного перекладу, будь ласка, натисніть тут, щоб перейти до оригінальної статті.

Вид: 23619|Відповідь: 0

[Джерело] Тип рядка першого атрибута EF додає індексні властивості

[Копіювати посилання]
Опубліковано 23.11.2017 18:47:15 | | | |
Якщо ви хочете створити індекс і прискорити запит, додайте атрибут [Index] до атрибута і автоматично згенеруйте код наступним чином:

Ми оновлюємо базу даних, і помилка наступна:



System.Data.SqlClient.SqlException (0x80131904): table 'dbo. Стовпець «Телефон» у «Обліковий запис» не може використовуватися як ключовий стовпець індексу.
   at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, 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)
   У 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, Int32 timeout, булевий asyncWrite)
   У System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(TaskCompletionSource'1 completion, String methodName, булевий sendToPipe, тайм-аут Int32, Boolean&usedCache, булевий asyncWrite, булевий у Retry)
   У System.Data.SqlClient.SqlCommand.ExecuteNonQuery()
   У System.Data.Entity.Infrastructure.Interception.DbCommandDispatcher. <NonQuery>b__0(DbCommand t, DbCommandInterceptionContext'1 c)
   У System.Data.Entity.Infrastructure.Interception.InternalDispatcher'1.Dispatch[TTarget,TinterceptionContext,TResult](TTarget target, Func'3 operation, TinterceptionContext перехопленняКонтекст, Дія'3 виконується, Дія'3 виконується)
   У System.Data.Entity.Infrastructure.Interception.DbCommandDispatcher.NonQuery(DbCommand command, DbCommandInterceptionContext interceptionContext)
   У System.Data.Entity.Internal.InterceptableDbCommand.ExecuteNonQuery()
   У System.Data.Entity.Migrations.DbMigrator.ExecuteSql (MigrationStatement migrationStatement, DbConnection connection, DbTransaction transaction, DbInterceptionContext перехопленняКонтекст)
   У System.Data.Entity.Migrations.Infrastructure.MigratorLoggingDecorator.ExecuteSql(MigrationStatement migrationStatement, DbConnection connection, dbTransaction transaction , DbПерехопленняКонтекст перехопленняКонтекст)
   У System.Data.Entity.Migrations.DbMigrator.ExecuteStatementsInternal(IEnumerable'1 migrationStatements, DbConnection connection, DbTransaction transaction, DbПерехопленняКонтекст перехопленняКонтекст)
   У System.Data.Entity.Migrations.DbMigrator.ExecuteStatementsWithinTransaction(IEnumerable'1 migrationStatements, DbTransaction transaction, dbInterceptionContext перехопленняКонтекст)
   In System.Data.Entity.Migrations.DbMigrator.ExecuteStatementsWithinNewTransaction(IEnumerable'1 migrationStatements, DbConnection connection, DbInterceptionContext перехопленняКонтекст)
   У System.Data.Entity.Migrations.DbMigrator.ExecuteStatementsInternal(IEnumerable'1 migrationStatements, DbConnection connection, DbInterceptionContext interceptionContext)
   at System.Data.Entity.Migrations.DbMigrator.ExecuteStatementsInternal(IEnumerable'1 migrationStatements, DbConnection connection)
   на System.Data.Entity.Migrations.DbMigrator.<>c__DisplayClass32. <ExecuteStatements>b__30()
   У System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.<>c__DisplayClass1. <Execute>b__0()
   at System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute[TResult](Func'1 operation)
   У System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute(Action operation)
   У System.Data.Entity.Migrations.DbMigrator.ExecuteStatements(IEnumerable'1 migrationStatements, DbTransaction existingTransaction)
   In System.Data.Entity.Migrations.DbMigrator.ExecuteStatements(IEnumerable'1 migrationStatements)
   на System.Data.Entity.Migrations.Infrastructure.MigratorBase.ExecuteStatements(IEnumerable'1 migrationStatements)
   У System.Data.Entity.Migrations.DbMigrator.ExecuteOperations(String migrationId, VersionedModel targetModel, IEnumerable'1 operations, IEnumerable'1 systemOperations, булевий пониження версії, булеве авто)
   на System.Data.Entity.Migrations.DbMigrator.ApplyMigration(DbMigration, DbMigration lastMigration)
   на System.Data.Entity.Migrations.Infrastructure.MigratorLoggingDecorator.ApplyMigration(DbMigration, DbMigration lastMigration)
   at System.Data.Entity.Migrations.DbMigrator.Upgrade(IEnumerable'1 pendingMigrations, String targetMigrationId, String lastMigrationId)
   на System.Data.Entity.Migrations.Infrastructure.MigratorLoggingDecorator.Upgrade(IEnumerable'1 pendingMigrations, String targetMigrationId, String lastMigrationId)
   на System.Data.Entity.Migrations.DbMigrator.UpdateInternal(String targetMigration)
   У System.Data.Entity.Migrations.DbMigrator.<>c__DisplayClasse. <Update>b__d()
   at System.Data.Entity.Migrations.DbMigrator.EnsureDatabaseExists(Action mustSucceedToKeepDatabase)
   на System.Data.Entity.Migrations.Infrastructure.MigratorBase.EnsureDatabaseExists(Action mustSucceedToKeepDatabase)
   на System.Data.Entity.Migrations.DbMigrator.Update(String targetMigration)
   У System.Data.Entity.Migrations.Infrastructure.MigratorBase.Update (String targetMigration)
   на System.Data.Entity.Migrations.Design.ToolingFacade.UpdateRunner.RunCore()
   У System.Data.Entity.Migrations.Design.ToolingFacade.BaseRunner.Run()
ClientConnectionId:2b5f614b-caab-4be6-bc1b-a813b7356739
Номер помилки: 1919,Штат:1,Клас:16
Table 'dbo. Стовпець «Телефон» у «Обліковий запис» не може використовуватися як ключовий стовпець індексу.


Причина помилки полягає в тому, що всі властивості рядків ef за замовчуванням мають тип NVARCHAR(Max),

Розв'язок наступний:

Виконайте довжину струни





Як показано на фото, створення успішне!





Попередній:Як зберігати рядки довшими за 4000 символів у NHibernate 3.3
Наступний:C# Scramble масиви
Застереження:
Усе програмне забезпечення, програмні матеріали або статті, опубліковані Code Farmer Network, призначені лише для навчання та досліджень; Вищезазначений контент не повинен використовуватися в комерційних чи незаконних цілях, інакше користувачі несуть усі наслідки. Інформація на цьому сайті надходить з Інтернету, і спори щодо авторських прав не мають до цього сайту. Ви повинні повністю видалити вищезазначений контент зі свого комп'ютера протягом 24 годин після завантаження. Якщо вам подобається програма, будь ласка, підтримуйте справжнє програмне забезпечення, купуйте реєстрацію та отримайте кращі справжні послуги. Якщо є будь-яке порушення, будь ласка, зв'яжіться з нами електронною поштою.

Mail To:help@itsvse.com