5 votes

Problème de polymorphisme dans MongoDb avec le pilote NoRM

J'ai des classes

[MongoDiscriminated]
public abstract class Content
{
    public int? Id { get; set; }
    public int? ParentId { get; set; }
    public string Slug { get; set; }
    public string Path { get; set; }
    public string Title { get; set; }
}

public class Area : Content
{
}

La requête comme celle-ci fonctionne

var item = mongo.GetCollection().AsQueryable().FirstOrDefault();

Mais lorsque je fais une requête comme celle-ci

var item = mongo.GetCollection().AsQueryable().FirstOrDefault();

Je reçois une InvalidCastException

L'objet doit implémenter IConvertible.

Qu'est-ce qui ne va pas? Il ne devrait pas y avoir de problème à convertir Area en Content. Dois-je vraiment faire en sorte que Content implémente IConvertible?

0voto

Chris Shain Points 33569

Vous pourriez simplement le caster après la requête:

mongo.GetCollection().AsQueryable().Cast().FirstOrDefault()

0voto

Zaid Masud Points 4536

Vient de soumettre une pull request sur github pour corriger cette exception :

https://github.com/atheken/NoRM/pulls

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X