Как исправить `Существующее соединение было принудительно закрыто из-за ошибки удаленного хоста` в EF Core - PullRequest
0 голосов
/ 19 апреля 2019

Я меняю своего провайдера сервера баз данных с MySQL на SQL Server Express, поэтому я меняю все свои библиотеки классов .NET Framework 4.6.1, которые я использовал ранее для соединения с базой данных MySQL. Конечно, я заново создал миграцию, установил Microsoft.EntityFrameWorkCore.SqlServer вместо MySQL и настроил DbContext.

Я использую эти библиотеки как плагины игрового сервера, поэтому я установил их там. К сожалению, если не удается загрузить и выдает эту ошибку:

System.Net.Sockets.SocketException (0x80004005): существующее соединение было принудительно закрыто удаленным хостом.

Я попытался запустить тот же DbContext, что и консольное приложение .NET Framework 4.6.1, и это сработало. Я также изменил все для моей другой библиотеки классов, которая использовала MySQL, но она также не загружалась. Поэтому я считаю, что эта ошибка происходит только с библиотекой классов.

Контекст моей базы данных (SQLKits - это название моего игрового плагина)

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;");
    }
}

и это изображение моего экземпляра класса, где я определяю DbContext:

https://i.imgur.com/hb0H9l0.png

Я также пытался использовать его без миграции, но он тоже не удался.

А в SQL Server Profiler нет ничего о попытке подключения, поэтому плагин даже не подключается к нему.

Я отлаживаю эту проблему в течение долгого времени, и я действительно не могу решить ее самостоятельно, и никто не может мне помочь, поэтому я прошу решение здесь.

~ Спасибо

Полная ошибка:

System.Net.Sockets.SocketException (0x80004005): существующее соединение было принудительно закрыто удаленным хостом.

в Microsoft.EntityFrameworkCore.ExecutionStrategyExtensions.Execute [TState, TResult] (стратегия Microsoft.EntityFrameworkCore.Storage.IExecutionStrategy, System.Func 2[T,TResult] operation, System.Func 2 [T, TResult] verifySucceeded, состояние TState) [0x00f]] 1038 * в Microsoft.EntityFrameworkCore.ExecutionStrategyExtensions.Execute [TState, TResult] (стратегия Microsoft.EntityFrameworkCore.Storage.IExecutionStrategy, состояние TState, операция System.Func`2 [T, TResult]) [0x00000] в: 0
в Microsoft.EntityFrameworkCore.SqlServer.Storage.Internal.SqlServerDatabaseCreator.Exists (System.Boolean retryOnNotExists) [0x00034] в <253b972c331e4e9c86e8f6b8430dc9d0>: 0 * 10 * в Microsoft.EntityFrameworkCore.SqlServer.Storage.Internal.SqlServerDatabaseCreator.Exists () [0x00000] в <253b972c331e4e9c86e8f6b8430dc9d0>: 0
в Microsoft.EntityFrameworkCore.Migrations.HistoryRepository.Exists () [0x0000b] в <69f795dffc844780bfcfff4ff8415a92>: 0
в Microsoft.EntityFrameworkCore.Migrations.Internal.Migrator.Migrate (System.String targetMigration) [0x00012] в <69f795dffc844780bfcfff4ff8415a92>: 0
в Microsoft.EntityFrameworkCore.RelationalDatabaseFacadeExtensions.Migrate (Microsoft.EntityFrameworkCore.Infrastructure.DatabaseFacade databaseFacade) [0x00010] в <69f795dffc844780bfcfff4ff8415a92>: 0
в RestoreMonarchy.SQLKits.SQLKitsPlugin + d__13.MoveNext () [0x00033] в <4589f5df884b435cab61ef028aadd6e8>: 0

--- Конец трассировки стека от предыдущего местоположения, где было сгенерировано исключение ---

в System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () [0x0000c] в: 0
в System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (задача System.Threading.Tasks.Task) [0x0003e] в: 0
в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (задача System.Threading.Tasks.Task) [0x00028] в: 0
в System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd (задача System.Threading.Tasks.Task) [0x00008] в: 0
в System.Runtime.CompilerServices.TaskAwaiter.GetResult () [0x00000] в: 0
в Rocket.Core.Plugins.Plugin + d__32.MoveNext () [0x002c4] в <4bcff08a1274468caf2867ee950c3ee7>: 0```

1 Ответ

0 голосов
/ 20 апреля 2019

Измените строку подключения на

optionsBuilder.UseSqlServer(@"Server=.\sqlexpress;Database=unturned;Trusted_Connection=True;")
...