Zu Datentabellen können Dateien hinzugefügt werden. Diese werden technisch aufgeteilt in einen Speicher und einem beschreibenden Objekt. Das beschreibende Objekt wird zum Datensatz abgelegt und kann pro Datei mehrfach existieren. Die Speicherung der Datei erfolgt aber nur einmalig, so daß kein zusätzlicher Speicher benötigt wird, wenn die identische Datei mehrfach zu verschiedenen Datensätzen abgelegt wird. Dieser Mechanismus wird von BA vollkommen Transparent durchgeführt, so dass dafür keine besonderen Implementierungen notwendig sind.
Für den Umgang mit Dateien gibt es Hilfsmethoden in Api.Attachments
.
Dateien auf einem Datensatz
Um auf einen Datensatz Methoden für den Umgang mit Dateien zur Verfügung zu haben, muss die Erweiterung über ein using
eingebunden werden.
using BA.Core.Extensions.BA.Core.DB;
Hinzufügen
byte[] data = new byte[];
OrmAttachment attachment = Api.Attachments.CreateAttachment("Dateinname.txt", data, null, session: orm.Session);
orm.AddAttachment(attachment, false);
orm.Save();
Abfragen
Einzelne Datei
OrmAttachment attachment = orm.GetAttachmentById(attachmentGuid);
Dateiliste
IEnumerable<OrmAttachment> attachments = orm.GetAttachments();
Eingebette Bilder in HTML Feldern werden ebenfalls als Dateien abgelegt und werden daher ebenfalls nur einmalig in den Speicher abgelegt. Um diese zu Laden muss man den Parameter inline
setzen.
IEnumerable<OrmAttachment> attachments = orm.GetAttachments(inline: AttachmentInlineType.Inline);
Entfernen
orm.RemoveAttachment(attachment);