ORM Datensatz erstellen
Um einen neuen Datensatz zur erstellen, hat man zwei Möglichkeiten. In der ersten Zeile wird ein neuer Datensatz mit der Angabe der Guid der Datentabelle erstellt. Dies ist zum Beispiel dann notwendig, wenn man programmatisch mit konfigurierten Datentabellen umgehen muss. Dies sollte aber nur in Ausnahmefällen notwendig sein. Die zweite Zeile erstellt einen neuen Datensatz mit Angabe des Typs der Datentablle.
OrmBABase newOrm = Api.ORM.GetNewORM(EnumDataSourceExtension.MyDataTable.ValueGuid, session);
OrmMyDataTable newMyData = Api.ORM.GetNewORM<OrmMyDataTable>(session);
Umgang mit Feldern
Programmierte Standardfelder stehen als normale Eigenschaften zur Verfügung
newMyData.TextField = "Inhalt";
if (!string.IsNullOrEmpty(newMyData.TextField))
newMyData.TextField += " Mehr Inhalt";
if (newMyData.BooleanField)
newMyData.BooleanField = false;
Konfigurierte Standardfelder können über die Member Methoden genutzt werden.
newMyData.SetMemberValue("TextField", "Inhalt");
if (!string.IsNullOrEmpty((string)newMyData.GetMemberValue("TextField")))
newMyData.SetMemberValue("TextField", newMyData.GetMemberValue("TextField") + " Mehr Inhalt");
if ((bool)newMyData.GetMemberValue("BooleanField"))
newMyData.SetMemberValue("BooleanField", false);
Umgang mit Auswahllisten
Die spezialisierten Methoden für Auswahllistenwerte benötigen den Feldnamen als string. Falls die Datentabelle programmiert ist, sollte man in jedem Fall nameof()
verwenden.
// Wert setzen (Entfernt alle anderen)
newMyData.SetEnumValue(nameof(OrmMyDataTable.EnumField), EnumMyEnum.FirstValue);
// Beinhaltet einen Wert
if (newMyData.EnumContains(nameof(OrmMyDataTable.EnumField), EnumMyEnum.FirstValue))
// Löscht alle Werte
newMyData.ClearEnumValues(nameof(OrmMyDataTable.EnumField));
// Fügt einen weiteren Wert hinzu
newMyData.AddEnumValue(nameof(OrmMyDataTable.EnumField), EnumMyEnum.FirstValue);
// Entfernt einen Wert
newMyData.RemoveEnumValue(nameof(OrmMyDataTable.EnumField), EnumMyEnum.FirstValue);
// Holt alle Werte (Änderungen an der Liste haben keine Auswirkungen)
IEnumerable<EnumMyEnum> enumValues = newMyData.GetEnumValues<EnumMyEnum>(nameof(OrmMyDataTable.EnumField));
Umgang mit Teil-Datentabellen
Teil-Datensätze können nicht eigenständig existieren, sondern nur in Zusammenhang eines Hauptdatensatzes. Felder können dann identisch gesetzt werden.
Neuen Teil-Datensatz erstellen
OrmSubDataTableMyDataTable subData = newMyData.SubDatas.AddNewObject();
subData.SortOrder = newMyData.SubDatas.Count() - 1;
Teil-Datensatz Abfragen
Position 0
OrmSubDataTableMyDataTable firstSubData = newMyData.SubDatas.Where(ff => ff.SortOrder == 0).FirstOrDefault();
Mit einem bestimmten unique Key
OrmSubDataTableMyDataTable keySubData = newMyData.SubDatas.Where(ff => ff.EnumContains(nameof(OrmSubDataTable.EnumField), EnumMyEnum.FirstValue)).FirstOrDefault();
Teil-Datensatz löschen
newMyData.SubDatas.Remove(keySubData);
int sortOrder = 0;
foreach(OrmSubDataTableMyDataTable subData in newMyData.SubDatas)
{
subData.SortOrder = sortOrder;
sortOrder++;
}
Teil-Datensätze speichern
Es muss immer der Hauptdatensatz gespeichert werden! Nur dadurch ist sichergestellt, das Beispielsweise das Datensatzprotokoll und das Änderungsdatum korrekt sind.
newMyData.Save();