54 messaggi dal 10 agosto 2019
per primo ho provato a caricare il progetto auth del capitolo 18 che usa sqllite e funziona perfettamente,volevo provare a "portare" il progetto su sql server ed ho dei problemi,ho fatto così :

ho creato un database sqlserver ABC

ho cambiato la default connection nel file json appsettings in
"DefaultConnection": "Server=(localdb)\\mssqllocaldb;Database=ABC;Trusted_Connection=True;MultipleActiveResultSets=true"

dentro configureservices ho aggiunto

services.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));

ed ho commentato

services.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlite(Configuration.GetConnectionString("DefaultConnection")));

eseguo il progetto
ed ottengo un errore:

"A database operation failed while processing the request.
SqlException: Invalid object name 'AspNetUserClaims'."

eseguo apply-migrations e provo a richiamare la pagina ed ottengo la pagina "Crea un amministratore"
compilo i campi ed otteng un errore :
"A database operation failed while processing the request.

DbUpdateException: An error occurred while updating the entries. See the inner exception for details.
SqlException: Cannot insert the value NULL into column 'Id', table 'ABC.dbo.AspNetUserClaims'; column does not allow nulls. INSERT fails. The statement has been terminated. "

"There are pending model changes for ApplicationDbContext

In Visual Studio, use the Package Manager Console to scaffold a new migration for these changes and apply them to the database:
PM> Add-Migration [migration name]
PM> Update-Database"

nel progetto eseguo da PM Add-Migration "TestSqlServer"
e poi eseguo Update-Database ,il risultato del comando ha come ultima riga una riga rossa:

"To change the IDENTITY property of a column, the column needs to be dropped and recreated."

ed ottengo :

A database operation failed while processing the request.

DbUpdateException: An error occurred while updating the entries. See the inner exception for details.
SqlException: Cannot insert the value NULL into column 'Id', table 'ABC.dbo.AspNetUserClaims'; column does not allow nulls. INSERT fails. The statement has been terminated.
Applying existing migrations for ApplicationDbContext may resolve this issue

There are migrations for ApplicationDbContext that have not been applied to the database

20190817160926_TestSqlServer
ed il bottone "ApplyMigrations" lo premo ed ottengo
"An error occurred applying migrations, try applying them from the command line"

segue il seguente suggerimento che applico
"In Visual Studio, you can use the Package Manager Console to apply pending migrations to the database:
PM> Update-Database"
in risposta al comando l'ultima riga è "To change the IDENTITY property of a column, the column needs to be dropped and recreated."

riprovo ad eseguire ma quando premo il bottone dopo aver inserito i dati per creare l'amministratore ottengo il seguente errore :

"A database operation failed while processing the request.

DbUpdateException: An error occurred while updating the entries. See the inner exception for details.
SqlException: Cannot insert the value NULL into column 'Id', table 'ABC.dbo.AspNetUserClaims'; column does not allow nulls. INSERT fails. The statement has been terminated.
Applying existing migrations for ApplicationDbContext may resolve this issue

There are migrations for ApplicationDbContext that have not been applied to the database

20190817160926_TestSqlServer

An error occurred applying migrations, try applying them from the command line

In Visual Studio, you can use the Package Manager Console to apply pending migrations to the database:
PM> Update-Database

Alternatively, you can apply pending migrations from a command prompt at your project directory:
> dotnet ef database update"

spero in un vostro suggerimento,grazie,ciao
Modificato da surfernet123 il 17 agosto 2019 18:39 -
54 messaggi dal 10 agosto 2019
ho cambiato il campo id nella tabella AspNetUserClaims facendolo diventare un identity con passo 1 ed ad un analisi superficiale ora il problema sembra risolto ma vorrei capire cosa dovevo fare nella parte di configurazione per evitare l'errore , grazie,ciao
Modificato da surfernet123 il 17 agosto 2019 19:11 -
11.800 messaggi dal 09 febbraio 2002
Contributi
Ciao,
prova ad andare nella directory /Data/Migrations e ad eliminare tutti i file .cs che trovi lì dentro.

Infatti, le migration sono un punto di contatto con il database e perciò le migration create per Sqlite non possono essere riutilizzate per Sql Server.

Perciò, dopo averle eliminate, riesegui questi due comandi.
PM> Add-Migration [migration name]
PM> Update-Database


ciao,
Moreno

Enjoy learning and just keep making
54 messaggi dal 10 agosto 2019
ho seguito il tuo prezioso suggerimento di eliminare i cs sotto data/migrations ed eseguire un add-migration ed un update-database e tutto funziona :-) , in effetti in questo modo il campo Id di AspNetUserClaims è anche un identity ,grazie ancora,ciao

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.