Cambiamento persistenza allegati in eLegere
Info
Il documento riguarda chiunque lavora direttamente con il database di eLegere senza passare per il servizio.
I cambiamenti hanno effetto da 2.13-prerelease.2.
Il documento spiega come la persistenza degli allegati in eLegere è cambiata per i database degli ambienti.
Abstract
- Differenze dalle versioni precedenti Spiega le differenze prima e dopo la versione 2.13-prerelease.2.
- Leggere un allegato Spiega come accedere e leggere un allegato dopo 2.13-prerelease.2.
- Inserire un allegato Spiega come inserire un allegato dopo2.13-prerelease.2.
Differenze dalle versioni precedenti¶
Da 2.13-prerelease.2. eLegere 2.13 gestisce finalmente:
- Caricamento di file sopra i 2 GB
- Organizzazione e navigazione in cartelle
- Caricamento di intere cartelle
Le funzionalità sopra hanno richiesto cambiamenti in come eLegere gestisce gli allegati nel database.
In precedenza¶
Nelle versioni precedenti a 2.13-prerelease.2, ogni Storage eLegere aveva una tabella sul database chiamata con il formato seguente: STORAGENAME_Attachments
.
eLegere prima di 2.13-prerelease.2 conservava sia i dati binari del file sia i relativi meta-dati in STORAGENAME_Attachments
..
Un record della tabella STORAGENAME_Attachments
aveva i seguenti campi:
Dopo 2.13-prerelease.2¶
Dopo 2.13-prerelease.2, ci sono due tabelle in un database eLegere per ciascun Storage: STORAGENAME_Attachments
e STORAGENAME_Attachments_Chunks
.
STORAGENAME_Attachments
ora conserva solo i meta-dati dell'allegato. (Riferito come_Attachments
)STORAGENAME_Attachments_Chunks
conserva i file eventualmente divisi in chunk per ragioni di ottimizzazione. (Riferito come_Attachments_Chunks
)
Tabella _Attachments
¶
La nuova tabella _Attachments
non ha più i campi Link, BinaryObject e FileStreamGuid. Link era già stato deprecato. BinaryObject (ora chiamata Data) e FileStreamGuid sono stati spostati sulla tabella _Attachments_Chunks
.
Invece, la tabella _Attachments
ha ora i seguenti nuovi campi:
Campo | Descrizione |
---|---|
FolderId | Id della cartella contenente il record. NULL se il record è nella root. |
Size | Dimensioni del file |
IsDeleted | Booleano che indica un file da cancellare. Quando l'utente cancella un allegato nel fronted, la cancellazione è soft: il file rimane sul database e IsDeleted ottiene il valore True. Il database cancellerà il record in seguito e eLegere non lo considererà. |
Path | Valore stringa che concatena gli ID delle cartelle dell'albero contenente il file. Un punto divide ogni ID. NULL se il record è nella root. |
Nota sul campo Path
¶
Example
Prendendo come esempio il percorso Home/Invoices/Incoming/012023.pdf
, _Attachments
lo registra come:
Id | Name | ... | IsFolder | Path |
---|---|---|---|---|
1 | Invoices | 1 | NULL | |
2 | Incoming | 1 | .1. | |
3 | 012023.pdf | 0 | .1.2. |
Tabella _Attachments_Chunks
¶
_Attachments_Chunks
conserva i file dividendoli eventualmente in chunk.
Una registrazione in _Attachments_Chunks
ha i seguenti campi:
Campo | Descrizione |
---|---|
Id | Id del record |
FileId | Id che identifica la riga con i meta-dati del file in _Attachments |
FileIndex | Numerico che definisce l'ordine per ricostruire gli allegati dal chunk. Deve iniziare da 0. |
Data | Il binario del file |
FileStreamGuid | Il valore del filestream. È unico e si deve generare tramite la funzione NEWID() |
IsDeleted | Booleano che indica un file da cancellare. Quando l'utente cancella un allegato nel fronted, la cancellazione è soft: il file rimane sul database e IsDeleted ottiene il valore True. Il database cancellerà il record in seguito e eLegere non lo considererà. |
Leggere un allegato¶
Warning
eLegere potrebbe dividere in chunk gli allegati per ottimizzazione di performance.
Questa sezione spiega come accedere a e leggere un allegato eLegere dal database.
Interagendo direttamente con le tabelle del database, puoi leggere un qualunque allegato seguendo i passaggi sotto:
- Nella tabella
_Attachments
, filtra perIsDeleted
comeFalse
e identifica l'allegato. Prendi nota del valore del campoId
. - Vai alla tabella
_Attachments_Chunks
.- Filtra
FileId
per il valore di_Attachments_Chunks
dallo step (1) eIsDeleted
comeFalse
- Ordina per
FileIndex
in ordine ascendente.
- Filtra
- Ricostruisci i dati binari conservati nel campo
Data
seguendo l'ordine ascendente diFileIndex
strettamente.
Sarai in grado di accedere all'allegato conservato per la riga e leggerlo.
Inserire un allegato¶
Note
Non è richiesto di dividere gli allegati in chunk durante l'inserimento.
Questa sezione spiega come inserire un allegato in eLegere direttamente nel database.
- Nella tabella
_Attachments
, inserisci una nuova riga. Prendi nota diId
: sarà il valore diFileId
nella tabella_Attachments_Chunks
. Devi registrare il valore del campoPath
con il formato corretto (vedi Nota sul campoPath
). - Vai sulla tabella
_Attachments_Chunks
e inserisci una nuova riga.FileIndex
deve avere valore 0.
Avrai inserito un allegato.