Sqlite 实体框架核心ObjectDisposeException:“;“安全手柄已关闭”; 安装程序
实体框架核心1.1 WPF应用程序.NET 4.5.2 问题是: 在sqlite数据库上运行查询时,有时会遇到此异常 发生System.ObjectDisposedException HResult=0x8013622Sqlite 实体框架核心ObjectDisposeException:“;“安全手柄已关闭”; 安装程序,sqlite,entity-framework-core,objectdisposedexception,Sqlite,Entity Framework Core,Objectdisposedexception,实体框架核心1.1 WPF应用程序.NET 4.5.2 问题是: 在sqlite数据库上运行查询时,有时会遇到此异常 发生System.ObjectDisposedException HResult=0x8013622 Message=安全句柄已关闭Source=mscorlib StackTrace: 在System.Runtime.InteropServices.SafeHandle.DangerousAddRef(布尔值)中& 成功)在 系统.StubHelpers.StubHelpers
Message=安全句柄已关闭Source=mscorlib StackTrace:
在System.Runtime.InteropServices.SafeHandle.DangerousAddRef(布尔值)中& 成功)在 系统.StubHelpers.StubHelpers.SafeHandledRef(安全手柄幻影, 布尔值(布尔值与成功值) Microsoft.Data.Sqlite.Interop.NativeMethods.Sqlite3\u Sqlite3.Sqlite3\u db\u文件名(Sqlite3Handle db,IntPtr zDbName)在 Microsoft.Data.Sqlite.Interop.NativeMethods.Sqlite3\u Sqlite3.db\u文件名(Sqlite3Handle db,IntPtr zDbName)在 Microsoft.Data.Sqlite.Interop.NativeMethods.sqlite3_db_文件名(Sqlite3Handle db,字符串zDbName)在 Microsoft.Data.Sqlite.Interop.VersionedMethods.Strategy3_7_10.GetFilename(Sqlite3Handle db,字符串zDbName)在 Microsoft.Data.Sqlite.Interop.VersionedMethods.GetFilename(Sqlite3Handle db,字符串zDbName)在 Microsoft.Data.Sqlite.SqliteConnection.get_DataSource()位于 Microsoft.EntityFrameworkCore.Storage.RelationalConnection.Close()
在 Microsoft.EntityFrameworkCore.Storage.Internal.SqliteRelationalConnection.Close() 在 Microsoft.EntityFrameworkCore.Query.Internal.QueryingEnumerable.Enumerator.Dispose() 在 Microsoft.EntityFrameworkCore.Query.QueryMethodProvider.d_u3
1.MoveNext()
在System.Linq.Enumerable.where中选择EnumerableInterator
2.MoveNext()在 Microsoft.EntityFrameworkCore.Query.Internal.LinqOperatorProvider.ExceptionInterceptor
1.EnumeratorExceptionInterceptor.MoveNext()
位于System.Collections.Generic.List
1..ctor(IEnumerable1 collection)
在System.Linq.Enumerable.ToList[TSource](IEnumerable
1 source)处
FxConnection.Persistence.Repositories.PointNameRepository.GetConnectedDeviceTracking(PointName
C:\Users*\documents\visual studio中的点名称)
2017\Projects\project\project\Persistence\Repositories\PointNameRepository.cs:line
357 at
FxConnection.ViewModels.ProjectDeviceDatabaseViewModel.InitialLoading\u DoWork(对象
C:\Users*\documents\visual studio中的发件人,DoWorkEventArgs e)
2017\Projects\project\project\ViewModels\ProjectDeviceDatabaseViewModel.cs:line
1729在
System.ComponentModel.BackgroundWorker.OnDoWork(DoWorkEventTargets e)位于System.ComponentModel.BackgroundWorker.WorkerThreadStart(对象 (论据) 我在循环中运行的查询,在循环之前创建了一个新上下文
DatabaseContext.Devices.Load();
var deviceFrom =
DatabaseContext.SocketSockets.AsNoTracking()
.Include(i => i.SocketFrom)
.Where(ss => ss.SocketTo.PointNameId == pointName.PointNameId)
.Select(s => s.SocketFrom)
.Where(s => s.IsConnected || s.IsSupplyOrGround == false)
.Select(s => s.Device)
.ToList();
var deviceTo =
DatabaseContext.SocketSockets.AsNoTracking()
.Include(i => i.SocketTo)
.Where(ss => ss.SocketFrom.PointNameId == pointName.PointNameId)
.Select(s => s.SocketTo)
.Where(s => s.IsConnected || s.IsSupplyOrGround == false)
.Select(s => s.Device)
.ToList();
我想知道我是否以正确的方式进行了查询?因为有时候完全可能没有结果。这可能是个问题吗
此外,我的SocketSocket
表基本上是一个包含Socket
对的多对多映射
问题并非总是发生在同一地点,即使数据相同
- 试图让多个上下文同时访问同一个sqlite数据库会导致此异常吗
DbContext
实例的并行或并发查询。请参见答案等。