Wir bringen unsere API in das 21. Jahrhundert und aktualisieren alle unsere Abfragen, um den neueren (2.4) Mongo C# -Treiber zu verwenden. Einer unserer Anfragen hat diese Filter:Filter mit den Feldern des abgeleiteten Typs
Query.Or(
Query<UserPermission>.EQ(p => p.UserId, userId),
Query<GroupPermission>.In(p => p.GroupId, groupIds)
)
UserPermission
und GroupPermission
erben beide von Permission
. Im alten Treiber funktionierte das gut, da der zugrundeliegende Code das Filterdokument nur erstellt hatte und Mongo ging auf seine fröhliche Art, die Daten zu holen.
Mit dem neuen Treiber, ich habe auf etwas so aussehen:
permissionsQueryBuilder.Or(
userPermissionsQueryBuilder.Eq(p => p.UserId, userId),
groupPermissionsQueryBuilder.In(p => p.GroupId, groupIds)
)
Leider ist es nicht funktioniert, weil Oder FilterDefinition<Permission>[]
und die beiden Abfrageelemente, die jeweils das Rück FilterDefinition<UserPermission>
und FilterDefinition<GroupPermission>
erwartet.
Was ist der richtige Weg, um dies mit dem neuen Mongo-Treiber zu erreichen? Ich habe Google durchsucht, aber die Suchergebnisse scheinen sich weitgehend auf _t
zu beziehen und wie abgeleitete Typen gespeichert werden, im Gegensatz dazu, wie sie abgefragt werden.
Vielen Dank im Voraus.
Eine Terminologie Nissen-Auswahl: Ich denke, Sie meinen "generische Typen" eher als "polymorphe Typen". – Blorgbeard
@Blorgbeard Notiert und zu abgeleiteten Typen korrigiert :) – john