Come creare un indice per una proprietà stringa in Entity Framework 7

entity-framework-core visual-studio-2015

Domanda

Sto provando a creare un primo modello di codice per Entity Framework 7. Uso la versione beta di Visual Studio 2015 rilasciata di recente e le seguenti versioni di pacchetti EntityFramework (snippet dal mio file project.json):

"EntityFramework.SqlServer": "7.0.0-beta1",
"EntityFramework.Commands": "7.0.0-beta1",

Sembra che attualmente non siano disponibili annotazioni di dati e sto utilizzando le migrazioni OnModelCreating e le migrazioni (in parte?) Recentemente implementate per creare il mio modello.

Per ora, le chiavi primarie e le relazioni uno-a-uno funzionano così come la creazione di indici per i tipi interi. Per esempio:

"EntityFramework.SqlServer": "7.0.0-beta1",
"EntityFramework.Commands": "7.0.0-beta1",

Questo snippet genera il seguente codice di migrazione da generare:

"EntityFramework.SqlServer": "7.0.0-beta1",
"EntityFramework.Commands": "7.0.0-beta1",

Ma quando sto cercando di aggiungere un indice alla proprietà stringa, la migrazione viene generata, ma quando viene applicata viene respinta da SQL Server, apparentemente a causa del tipo di colonna nvarchar (MAX). Sembra che .Required().MaxLength(100) non impone la generazione limitata del tipo di colonna di stringhe. E sebbene ci sia un metodo per cambiare il tipo di colonna, non riesco a trovare il modo di chiamarlo tramite ModelBuilder:

"EntityFramework.SqlServer": "7.0.0-beta1",
"EntityFramework.Commands": "7.0.0-beta1",

Migrazione risultante:

"EntityFramework.SqlServer": "7.0.0-beta1",
"EntityFramework.Commands": "7.0.0-beta1",

C'è un modo per creare un indice sulla proprietà stringa nella versione beta di EF7?

Risposta accettata

Sfortunatamente in questo momento (7.0.0-beta1), i metadati di tipo lunghezza e colonna massima non vengono rispettati quando si determina quale tipo di colonna utilizzare. Per ora, devi passare al DDL non elaborato nella migrazione.

// Add before CreateIndex
migrationBuilder.Sql("ALTER TABLE [Keyword] ALTER COLUMN [Word] nvarchar(4000)");



Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché