如何修复EF Core

时间:2019-04-19 18:39:25

标签: c# sql-server entity-framework-core

我将数据库服务器提供程序从MySQL更改为SQL Server Express,因此我将所有之前用于MySQL数据库连接的.NET Framework 4.6.1类库更改。当然,我重新创建了迁移,安装了Microsoft.EntityFrameWorkCore.SqlServer而不是MySQL,然后设置了DbContext

我将这些库用作游戏服务器插件,因此我将它们安装在了那里。遗憾的是,如果无法加载并引发此错误:

  

System.Net.Sockets.SocketException(0x80004005):现有连接被远程主机强行关闭。

我尝试运行与.NET Framework 4.6.1控制台应用程序相同的DbContext,并且可以正常工作。我还为使用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):现有连接被远程主机强行关闭。

     

at Microsoft.EntityFrameworkCore.ExecutionStrategyExtensions.Execute [TState,TResult](Microsoft.EntityFrameworkCore.Storage.IExecutionStrategy策略,System.Func 2[T,TResult] operation, System.Func 2 [T,TResult] verifySucceeded,TState状态)[0x0001f]: 0
  在Microsoft.EntityFrameworkCore.ExecutionStrategyExtensions.Execute [TState,TResult](Microsoft.EntityFrameworkCore.Storage.IExecutionStrategy策略,TState状态,System.Func`2 [T,TResult]操作)中的[0x00000],位于0
  在<253b972c331e4e9c86e8f6b8430dc9d0>:0
中的Microsoft.EntityFrameworkCore.SqlServer.Storage.Internal.SqlServerDatabaseCreator.Exists(System.Boolean retryOnNotExists)[0x00034]处   在<253b972c331e4e9c86e8f6b8430dc9d0>:0
中的Microsoft.EntityFrameworkCore.SqlServer.Storage.Internal.SqlServerDatabaseCreator.Exists()[0x00000]中   在Microsoft.EntityFrameworkCore.Migrations.HistoryRepository.Exists()[0x0000b]在<69f795dffc844780bfcfff4ff8415a92>:0
  在<69f795dffc844780bfcfff4ff8415a92>:0
中的Microsoft.EntityFrameworkCore.Migrations.Internal.Migrator.Migrate(System.String targetMigration)[0x00012]中   在<69f795dffc844780bfcfff4ff8415a92>:0
中的Microsoft.EntityFrameworkCore.RelationalDatabaseFacadeExtensions.Migrate(Microsoft.EntityFrameworkCore.Infrastructure.DatabaseFacade databaseFacade)[0x00010]中   在<4589f5df884b435cab61ef028aadd6e8>:0

中的RestoreMonarchy.SQLKits.SQLKitsPlugin + d__13.MoveNext()[0x00033]中      

---从上一个引发异常的位置开始的堆栈结束跟踪---

     

在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 :(得分:0)

将连接字符串更改为

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