Sto cambiando il mio provider di server di database da MySQL a SQL Server Express, quindi sto cambiando tutte le librerie di classi di .NET Framework 4.6.1 che ho usato prima per la connessione al database MySQL. Ovviamente ho ricreato la migrazione, installato Microsoft.EntityFrameWorkCore.SqlServer
invece di MySQL e impostato DbContext
.
Uso queste librerie come plugin del server di gioco, quindi le ho installate lì. Purtroppo se non riesce a caricare e genera questo errore:
System.Net.Sockets.SocketException (0x80004005): una connessione esistente è stata forzatamente chiusa dall'host remoto.
Ho provato a eseguire lo stesso DbContext
dell'applicazione console .NET Framework 4.6.1 e ha funzionato. Ho anche cambiato tutto per la mia altra libreria di classi che utilizzava MySQL, ma non è stato possibile caricare. Quindi credo che questo errore si verifichi solo nella libreria di classi.
Il mio contesto di database ( SQLKits
è il nome del mio plugin di gioco)
public class SQLKitsContext : DbContext
{
public virtual DbSet<Kit> Kits { get; set; }
public virtual DbSet<KitItem> KitItems { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlServer(@"Server=localhost\sqlexpress;Database=unturned;Trusted_Connection=True;");
}
}
e questa è un'immagine della mia classe di istanza in cui definisco DbContext
:
https://i.imgur.com/hb0H9l0.png
Ho anche provato a usarlo senza migrazione, ma non è riuscito neanche.
E in SQL Server Profiler non c'è nulla nel tentativo di connessione, quindi il plugin non si connette nemmeno ad esso.
Sto eseguendo il debug di questo problema da molto tempo e davvero non sono riuscito a risolverlo da solo né nessuno potrebbe aiutarmi, quindi è per questo che sto chiedendo una soluzione qui.
~ Grazie
Errore completo:
System.Net.Sockets.SocketException (0x80004005): una connessione esistente è stata forzatamente chiusa dall'host remoto.
at Microsoft.EntityFrameworkCore.ExecutionStrategyExtensions.Execute [TState, TResult] (Microsoft.EntityFrameworkCore.Storage.IExecutionStrategy strategy, System.Func
2[T,TResult] operation, System.Func
2 [T, TResult] verificaSucfed 0, T0101 ] in: 0
presso Microsoft.EntityFrameworkCore.ExecutionStrategyExtensions.Execute [TState, TResult] (Microsoft.EntityFrameworkCore.Storage.IExecutionStrategy, stato TState, System.Func`2 [T, TResult] operazione) [0x00000] in: 0
at Microsoft.EntityFrameworkCore.SqlServer.Storage.Internal.SqlServerDatabaseCreator.Exists (System.Boolean retryOnNotExists) [0x00034] in <253b972c331e4e9c86e8f6b8430dc9d0>: 0
at Microsoft.EntityFrameworkCore.SqlServer.Storage.Internal.SqlServerDatabaseCreator.Exists () [0x00000] in <253b972c331e4e9c86e8f6b8430dc9d0>: 0
at Microsoft.EntityFrameworkCore.Migrations.HistoryRepository.Exists () [0x0000b] in <69f795dffc844780bfcfff4ff8415a92>: 0
at Microsoft.EntityFrameworkCore.Migrations.Internal.Migrator.Migrate (System.String targetMigration) [0x00012] in <69f795dffc844780bfcfff4ff8415a92>: 0
at Microsoft.EntityFrameworkCore.RelationalDatabaseFacadeExtensions.Migrate (Microsoft.EntityFrameworkCore.Infrastructure.DatabaseFacade databaseFacade) [0x00010] in <69f795dffc844780bfcfff4ff8415a92>: 0
at RestoreMonarchy.SQLKits.SQLKitsPlugin + d__13.MoveNext () [0x00033] in <4589f5df884b435cab61ef028aadd6e8>: 0--- Fine della traccia dello stack dalla posizione precedente in cui è stata generata l'eccezione ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () [0x0000c] in: 0
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (attività System.Threading.Tasks.Task) [0x0003e] in: 0
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (attività System.Threading.Tasks.Task) [0x00028] in: 0
at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd (attività System.Threading.Tasks.Task) [0x00008] in: 0
at System.Runtime.CompilerServices.TaskAwaiter.GetResult () [0x00000] in: 0
su Rocket.Core.Plugins.Plugin + d__32.MoveNext () [0x002c4] in <4bcff08a1274468caf2867ee950c3ee7>: 0
Cambia la stringa di connessione in
optionsBuilder.UseSqlServer(@"Server=.\sqlexpress;Database=unturned;Trusted_Connection=True;")