0

我正在尝试从 SQL 数据库填充英镑数据库,所以我查询 SQL 得到大约 6000

    _engine = new SterlingEngine(new PlatformAdapter());
    _engine.Activate();
    string folder = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
    _databaseInstance = _engine.SterlingDatabase.RegisterDatabase<TCP.Datosejemplol.Sterling.ejemploDatos>("ejemploDatos", new FileSystemDriver(@"E:\pruebaSterling\Otrofolder"));


    BLL.Contextos.ContextoIndices manejoIndices = new BLL.Contextos.ContextoIndices(new BLL.SQL.ManejoIndices());
    var DatosCompleto = manejoIndices.DatosCompleto();

    foreach (var indiceBase in DatosCompleto)
    {
        var indice = new TCP.Datosejemplol.Sterling.Entidades.Indice()
            {
                IdIndice = indiceBase.IdIndice,
                Nombre = indiceBase.Nombre,
                NombreCompleto = indiceBase.NombreCompleto,
                IdIndice_padre = indiceBase.IdIndice_padre,
                EsPadre = indiceBase.EsPadre
            };
        _databaseInstance.SaveAsync<TCP.Datosejemplol.Sterling.Entidades.Indice>(indice);
    }

它似乎工作正常,但是当关闭与 _engine.Dispose(); 的连接时;

我得到以下异常:

 InnerException: System.NullReferenceException
   HResult=-2147467261
   Message=Referencia a objeto no establecida como instancia de un objeto.
   Source=Wintellect.Sterling.Core
   StackTrace:
        en Wintellect.Sterling.Core.Serialization.AggregateSerializer.Serialize(Object target, BinaryWriter writer) en e:\Proyectos\Sistematizacion\Codigo\TCP.ArbolJurisprudencial\Wintellect.Sterling.Core\Serialization\AggregateSerializer.cs:línea 114
        en Wintellect.Sterling.Server.FileSystem.FileSystemDriver.<SerializeIndexAsync>d__c`2.MoveNext() en e:\Proyectos\Sistematizacion\Codigo\TCP.ArbolJurisprudencial\Wintellect.Sterling.Server\FileSystem\FileSystemDriver.cs:línea 129
     --- Fin del seguimiento de la pila de la ubicación anterior donde se produjo la excepción ---
        en System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
        en System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
        en System.Runtime.CompilerServices.ConfiguredTaskAwaitable.ConfiguredTaskAwaiter.GetResult()
        en Wintellect.Sterling.Core.Indexes.IndexCollection`3.<SerializeIndexesAsync>d__8.MoveNext() en e:\Proyectos\Sistematizacion\Codigo\TCP.ArbolJurisprudencial\Wintellect.Sterling.Core\Indexes\IndexCollection.cs:línea 92
     --- Fin del seguimiento de la pila de la ubicación anterior donde se produjo la excepción ---
        en System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
        en System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
        en System.Runtime.CompilerServices.ConfiguredTaskAwaitable.ConfiguredTaskAwaiter.GetResult()
        en Wintellect.Sterling.Core.Indexes.IndexCollection`3.<FlushAsync>d__c.MoveNext() en e:\Proyectos\Sistematizacion\Codigo\TCP.ArbolJurisprudencial\Wintellect.Sterling.Core\Indexes\IndexCollection.cs:línea 104
     --- Fin del seguimiento de la pila de la ubicación anterior donde se produjo la excepción ---
        en System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
        en System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
        en System.Runtime.CompilerServices.ConfiguredTaskAwaitable.ConfiguredTaskAwaiter.GetResult()
        en Wintellect.Sterling.Core.Database.BaseDatabaseInstance.<FlushAsync>d__27.MoveNext() en e:\Proyectos\Sistematizacion\Codigo\TCP.ArbolJurisprudencial\Wintellect.Sterling.Core\Database\BaseDatabaseInstance.cs:línea 633

我尝试检查 saveAsync BackgroundWorker 是否已完成,并且每次都完成。

如果我尝试在每个会话中保存更少的项目,那么一切正常。所以我的问题是:

有没有办法知道保存是否还没有完成?

请指教。

BR

乔治

4

0 回答 0