私たちのAPIを21世紀に持ち込み、すべてのクエリを新しい(2.4)Mongo C#ドライバを使用するように更新しています。派生型のフィールドを使用したフィルタ
Query.Or(
Query<UserPermission>.EQ(p => p.UserId, userId),
Query<GroupPermission>.In(p => p.GroupId, groupIds)
)
UserPermission
とGroupPermission
両方がPermission
継承:私たちのクエリの一つは、このフィルタを持っています。古いドライバでは、基本的なコードがフィルタドキュメントを作成したばかりで、Mongoはデータを取得するうねりがあったので、これはうまくいきました。新しいドライバで
私はこのような何かを見てきました、残念ながら
permissionsQueryBuilder.Or(
userPermissionsQueryBuilder.Eq(p => p.UserId, userId),
groupPermissionsQueryBuilder.In(p => p.GroupId, groupIds)
)
またはFilterDefinition<Permission>[]
を期待し、2つのクエリ要素は、それぞれFilterDefinition<UserPermission>
とFilterDefinition<GroupPermission>
を返すので、それは動作しません。
新しいMongoドライバを使用してこれに近づく正しい方法は何ですか?私はGoogleを検索しましたが、検索結果はおおよそ_t
に関連しているように見えます。
ありがとうございます。古いドライバを使用して
用語「nit-pick」:「多形型」ではなく「ジェネリック型」を意味すると思います。 – Blorgbeard
@Blorgbeard注目型に修正されました。 – john