DotNetNext / SqlSugar

.Net aot ORM Fastest ORM Simple Easy VB.NET Sqlite orm Oracle ORM Mysql Orm 虚谷数据库 postgresql ORm SqlServer oRm 达梦 ORM 人大金仓 ORM 神通ORM C# ORM , C# ORM .NET ORM NET5 ORM .NET6 ORM ClickHouse orm QuestDb ,TDengine ORM,OceanBase orm,GaussDB orm ,Tidb orm Object/Relational Mapping
https://www.donet5.com/Home/Doc
MIT License
5.19k stars 1.32k forks source link

Safe handle has been closed #1171

Closed hongyanfengzi closed 1 year ago

hongyanfengzi commented 1 year ago

private void InitDb() { var url = $"{AppContext.BaseDirectory}database"; var databaseUrl = $@"DataSource={url}{databaseName}"; db = new SqlSugarScope( new ConnectionConfig { ConnectionString = databaseUrl, DbType = DbType.Sqlite, //设置数据库类型 IsAutoCloseConnection = true, //自动释放数据务,如果存在事务,在事务结束后释放 InitKeyType = InitKeyType.Attribute, //从实体特性中读取主键自增列信息 ConfigureExternalServices = new ConfigureExternalServices { EntityService = (c, p) => { p.DbColumnName = UtilMethods.ToUnderLine(p.DbColumnName); //ToUnderLine驼峰转下 if (p.IsPrimarykey == false && new NullabilityInfoContext() .Create(c).WriteState is NullabilityState.Nullable) { p.IsNullable = true; } }, EntityNameService = (x, p) => //处理表名 { p.DbTableName = UtilMethods.ToUnderLine(p.DbTableName); //ToUnderLine驼峰转下划线方法 } } }, delegate(SqlSugarClient client) { client.Aop.OnLogExecuted = (s, parameters) => { // 打印执行sql //logService.LogI(LogTemplates.ExecutedSql, LogFileType.Database, s); }; }); try { db!.DbMaintenance.CreateDatabase(); } catch (Exception e) { logService.LogE(LogTemplates.InitDatabase, exception: e, LogFileType.Database, $"{url}{databaseName}"); throw; } }

System.ObjectDisposedException: Safe handle has been closed. Object name: 'SafeHandle'. at System.StubHelpers.StubHelpers.SafeHandleAddRef(SafeHandle pHandle, Boolean& success) at SQLitePCL.SQLite3Provider_dynamic_cdecl.SQLitePCL.ISQLite3Provider.sqlite3_column_count(sqlite3_stmt stm) at Microsoft.Data.Sqlite.SqliteDataRecord.get_FieldCount() at Microsoft.Data.Sqlite.SqliteDataRecord.GetSqliteType(Int32 ordinal) at Microsoft.Data.Sqlite.SqliteDataRecord.GetFieldType(Int32 ordinal) at Microsoft.Data.Sqlite.SqliteDataReader.GetFieldType(Int32 ordinal) at SqlSugar.DbBindAccessory.GetDataReaderNames(IDataReader dataReader, String& types) at SqlSugar.DbBindAccessory.GetEntityList[T](SqlSugarProvider context, IDataReader dataReader) at SqlSugar.DbBindProvider.DataReaderToList[T](Type type, IDataReader dataReader) at SqlSugar.QueryableProvider1.GetData[TResult](Boolean isComplexModel, Type entityType, IDataReader dataReader) at SqlSugar.QueryableProvider1.GetData[TResult](KeyValuePair2 sqlObj) at SqlSugar.QueryableProvider1._ToList[TResult]() at SqlSugar.QueryableProvider1.ToList() at SqlSugar.QueryableProvider1.First() at SqlSugar.QueryableProvider1.First(Expression1 expression) at DetonatorFactoryApp.LocalDatabase.SqlSugarServices.SelectFirstSettingInfo() in E:\detonatorfactoryapp\DetonatorFactoryApp.LocalDatabase\SQLSugarServices.cs:line 400 at DetonatorFactoryApp.LocalDatabase.SqlSugarServices.UpdateCurrentGkm(String currentGkm) in E:\detonatorfactoryapp\DetonatorFactoryApp.LocalDatabase\SQLSugarServices.cs:line 445 at DetonatorFactoryApp.Common.Helper.GkmControl.SaveGkmCurInfoToSqlite(SqlSugarServices sqlSugarServices) in E:\detonatorfactoryapp\DetonatorFactoryApp.Common\Helper\GkmControl.cs:line 265 at DetonatorFactoryApp.HuaFeng.Service.LowerComputerService.DealSkip() at DetonatorFactoryApp.HuaFeng.Service.LowerComputerService.InjectComplete()

sqlite数据库, sqlsugar5.1.4.81-preview5版本 使用的单例模式注入 containerRegistry.RegisterSingleton(); 有几率出现句柄已关闭的情况