Relationsdaten
Um Relationen erstellen zu können werden die Relationsdaten der Quelle benötigt. Dazu stehen eine Reihe von Methoden in Api.ORM
zur Verfügung. Es gibt Methoden für einzelne Datensätze.
Guid otherOrmGuid = "[INSERT A RECORD GUID]".ToGuid();
RelationData relationDataGuid = Api.ORM.GetRelationDataModel(session, otherOrmGuid);
// Falls man das Orm zur Verfügung hat. Ansonsten ist dies langsamer
OrmMyDataTable otherOrm = Api.ORM.GetOrm<OrmMyDataTable>(otherOrmGuid, session);
RelationData relationDataOrm = Api.ORM.GetRelationDataModel(otherOrm);
Es gibt Methoden für Abfragen und Listen von Guids.
IQueryable<OrmMyDataTable> queryWith = Api.ORM.GetQueryWithReadPermissions<OrmMyDataTable>(session);
queryWith = queryWith.Where(ff => ff.TextField != null && ff.TextField.Contains("Inhalt"));
IQueryable<RelationData> relationDatasQuery = Api.ORM.GetRelationDataModels(queryWith);
IQueryable<RelationData> relationDataGuids = Api.ORM.GetRelationDataModels<OrmActivityBase>(session, new[] { guid1, guid2 });
Erstellen
Relationen werden auf dem Ziel-Datensatz erstellt. In diesem Beispiel wird keine Relationskategorie angegeben.
newMyData.AddSource(relationDataOrm, EnumRelationTypeExtension.MyRelation, null);
newMyData.Save();
Falls der Ziel-Datensatz erst geladen werden müsste, kann alternativ eine Api.Relation
Methode genutzt werden.
OrmRelation relation = Api.Relation.CreateRelation(session, relationDataOrm, relationDataNewMyData, EnumRelationTypeExtension.MyRelation, null);
relation.Save();
Falls möglich sollte diese Methode in der Massenverarbeitung eingesetzt werden.
Entfernen
Das Entfernen funktioniert identisch, außer dass dafür keine Relations-Daten benötigt werden. Es genügt die Guid des Quell-Datensatzes
newMyData.RemoveSource(otherOrmGuid, EnumRelationTypeExtension.MyRelation, null);
newMyData.Save();
Auch zum Entfernen gibt es eine Methode in der Api.Relation
, die für die Massenverarbeitung optimal ist.
int deletedCount = Api.Relation.DeleteAllRelations(session, otherOrmGuid, newMyData.Oid, EnumRelationTypeExtension.MyRelation);