11 messaggi dal 21 settembre 2019
Avevo un progetto in progress ed all fine ho optato per una PWA.
Visto che il backend è in parte già presente dovrò interfacciarmi ma da PWA 'standalone' via API che predisporrano opportunamente.

Per il funzionamento offline però non mi è chiaro quale DB prevedere di usare per salvare i dati.
Ho letto parecchio, scoprendo che alcuni suggeriscono (anche in ASPitalia stessa) l'uso di IdexedDB , altri di EFCore+SQLite ; EFcore lo conosco già e quindi mi attira ma di SQLite sento tra le altre cose anche cose 'spiacevoli' che fatico a valutare.

Inoltre architetturalmente non mi è chiaro se in SQLite, che sta su file, possa salvarmi i dati per poi riprendermeli o mi serva solo per comodità ma in RAM e quindi alla fine dovrò salvare in IndexDB.
Infine con DB articolati (come quello che dovrò gestire) mi sembra che IndexDB pur con quelle che chiamano le 'extensions' (che lo rendono grammaticalmente accessibile in modo simil-EFcore) abbia ancora diversi limiti che per me saranno un problema (primo tra tutti le foreign-key)

E tutto ciò senza indagare oltre su implicanze per operazioni necessarie di sync con il lato server (via API visto che è PHP)

Qualcuno mi riesce ad aiutare a capire meglio per fare una "scelta" ?
Grazie anticipato a chiunque dedicherà del proprio tempo per aiutarmi.
110 messaggi dal 19 ottobre 2005
dev.to
Ciao, secondo il tipo di database che ti serve dipende da quello che devi fare. SQLite io l'ho usato in diverse applicazioni client come DB locale temporaneo e non ho mai avuto problemi. Ho avuto anche database "mediamente complessi". Ovviamente metti in conto che non hai tutte le funzionalità che ti offre un database tipo SQL Server o Oracle.
Con SQLite puoi salvare il tutto su file come un normale database ed accedere ai dati salvati in un secondo momento, come faresti con un qualsiasi altro database.
11 messaggi dal 21 settembre 2019
Grazie @santoni1981 del suggerimento per esperienza.

Visto che dici di avere già sperimentato più volte mi permetto qualche domanda:
- per accedere al DB oltre a Microsoft.EntityFrameworkCore.Sqlite quali altri package utilizzi solitamente per SQLite ?

Ho imbastito un progetto di test mi è sembrato di capire che debbano essere installati i seguenti package:

  <ItemGroup>
    <PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly" Version="6.0.9" />
    <PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.DevServer" Version="6.0.9" PrivateAssets="all" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="7.0.0" />
    <PackageReference Include="SqliteWasmHelper" Version="1.1.1-beta-g8a155f5a42" />
  </ItemGroup>


per poter utilizzare EFCore come modellatore ed interrogatore del DB ed una grammatica (via SqliteWasmHelper) semplice e 'tradizionale'.

La grammatica effettivamente è semplice.
Definita la classe AppDBcontext al solito da DBContext e definita poi la Factory in Program.cs
 
  using SqliteWasmHelper;
    ...
  builder.Services.AddSqliteWasmDbContextFactory<MYContext>(opts => opts.UseSqlite("Data Source=things.sqlite3"));


l'accesso al DB è semplice; in una pagina o parte di codice basta:
    @inject ISqliteWasmDbContextFactory<ThingContext> Factory
   ....
  using var ctx = await Factory.CreateDbContextAsync();
  ctx.Things.Add(new Thing { Name = newThing });
  await ctx.SaveChangesAsync();


E' la stessa 'tecnica' che dici di avere già utilizzato diverse volte ?
O me la stò complicando (per esempio ho già dovuto installare i wasm-tools e non mi è chiaro se lavora in cache o come) ?

Grazi anticipato

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.