c# - Get documents for base class and inheriting classes in one query -



c# - Get documents for base class and inheriting classes in one query -

i have mongo collection of taskbase documents. taskbase has 3 subclasses. created collection manager collection (from generic manager use). when create, update or retrieve subclass of taskbase right type , no exception.

i created next method:

public ienumerable<taskbase> gettasksbyappid(string appid) { var entityquery = query<taskbase>.eq(t => t.appoid, appid); homecoming this.mongoconnectionhandler.mongocollection.find(entityquery).tolist(); }

when run exception element [some element existing in subclass] not property or fellow member of taskbase understand why getting exception, don't know it. collection of types of tasks associated app.

you need show driver class hierarchy. there 2 options, first using bsonknowntypes , bsondiscriminator attributes, other using bsonclassmap.

attributes

decorate base of operations class specific derived classes want include (similar in wcf). tell driver it's root need bsondiscriminator:

[bsondiscriminator(rootclass = true)] [bsonknowntypes(typeof(concretetask))] public class taskbase { } bsonclassmap bsonclassmap.registerclassmap<taskbase>(); bsonclassmap.registerclassmap<concretetask>(); result

as result, document's type discriminator (_t) array, , not single value. in case:

{ _t : ["taskbase", "concretetask"] }

c# .net mongodb polymorphism mongodb-csharp

Comments

Popular posts from this blog

php - Android app custom user registration and login with cookie using facebook sdk -

django - Access session in user model .save() -

php - .htaccess Multiple Rewrite Rules / Prioritizing -