Dotmim.Syn c SqliteSyncProvider создает исключение в Xamarin IOS | Автономная синхронизация - PullRequest
0 голосов
/ 03 апреля 2020

Я пытаюсь использовать Dotmim.Syn c с моим проектом Xamarin IOS. Я добавил. net стандартный проект 2.0 в моем решении. Добавлены слепки Dotmim.Syn c .Sqlite & Dotmim.Syn c .Web.Client. Вот код SyncService:

  public async Task SyncAsync()
  {
     var proxyClientProvider = new WebClientOrchestrator("https://localhost:44358/api/sync");
     var clientProvider = new SqliteSyncProvider("mymobile.db");

     var progress = new SynchronousProgress<ProgressArgs>(s => Console.WriteLine($"{s.Context.SyncStage}:\t{s.Message}"));
     var agent = new SyncAgent(clientProvider, proxyClientProvider);
     do
     {
        // Launch the sync process
        var s1 = await agent.SynchronizeAsync(progress);
        // Write results
        Console.WriteLine(s1);

     } while (Console.ReadKey().Key != ConsoleKey.Escape);
     Console.WriteLine("End");
}

Я добавил это. net стандартную ссылку на проект в мой iOS проект и назвал класс обслуживания Syn c (только для PO C) .

 mButton.TouchUpInside += (sender, e) =>
{
    SyncService sync = new SyncService();
    Sync. SyncAsync ();
 };

в

 var s1 = await agent.SynchronizeAsync(progress);

Выдает исключение:

  System.NullReferenceException: Object reference not set to an instance of an object
  at SQLitePCL.raw.sqlite3_open_v2 (SQLitePCL.utf8z filename, SQLitePCL.sqlite3& db, 
  System.Int32 flags, SQLitePCL.utf8z vfs) [0x00000] in <15ecb38d58394d7b88b3f841a7dda078>:0
  at SQLitePCL.raw.sqlite3_open_v2 (System.String filename, SQLitePCL.sqlite3& db, 
  System.Int32 flags, System.String vfs) [0x0000e] in <15ecb38d58394d7b88b3f841a7dda078>:0
  At Microsoft. Data. Sqlite. SqliteConnection. Open () [0x00122] in 
 <9ffe4c48f3134a7b905b5da527410f26>:0
 at System.Data.Common.DbConnection.OpenAsync (System.Threading.CancellationToken 
 cancellationToken) [0x00011] in /Library/Frameworks/Xamarin.iOS.framework/Versions/12.8.0.0/src/Xamarin.iOS/external/corefx/src/.    System.Data.Common/src/System/Data/Common/DbConnection.cs:122

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

И System.Console.ReadKey дает «Операция не поддерживается на этой платформе.»

Любые предложения / помощь приветствуются.

1 Ответ

0 голосов
/ 28 апреля 2020

Вы должны использовать SQLitePCL.Batteries_V2.Init();

Это часть ограничений Xamarin. Больше информации здесь: https://docs.microsoft.com/en-us/dotnet/standard/data/sqlite/xamarin

Относительно Dotmim.Sync, см. Дополнительную информацию здесь: https://github.com/Mimetis/Dotmim.Sync/issues/249#issuecomment -609025301

...