2013-01-17 1 views
0

Nous avons essayé de chercher stackoverflow & d'autres endroits, mais n'a pas trouvé de solution.requête RavenDB avec un type d'objet

Nous avons un cours qui ressemble à ceci.

class UserAccountInfo 
{ 
    public String someid; 
    public Object needtoqueryobject; //This can store different object types like AccountInfoCustomer, AccountInfoFriend etc., 
} 

Nous voulons interroger cette classe comme suit.

var Result = sess.Query<UserAccountInfo>().Where(x => ((AccountInfoCustomer)x.needtoqueryobject).AccountType == usertype); 

Mais cela n'est pas supporté et il est impossible d'interroger les champs non indexés. Nous pouvons comprendre que RavenDB est incapable d'indexer ce type particulier car il ne comprend pas le type réel. Quelqu'un peut-il expliquer comment s'assurer que ces classes sont également indexées?

Ajouté la définition de type AccountInfoCustomer:

using System; 

namespace Dheutto.Models 
{ 
public enum AccountTypes 
    { 
     Customer, 
     Trader, 
     Distributor 
    } 

    public class AccountInfoCustomer 
    { 
     //The AccountNumber for the document 
     public String FirstName { get; set; } 
     public String MiddleName { get; set; } 
     public String LastName { get; set; } 
     public String Father_spouse_Name { get; set; } 
    public AccountTypes AccountType{ get; set; } 
    } 
} 

Ce type de AccountInfoCustomer est ce qui est stocké comme objet dans le champ needtoqueryobject. Donc, quand je fais une requête avec un classeur, je m'attends à ce qu'il renvoie un résultat. Corrigez-moi si je me trompe.

+0

'Objet' n'a pas de membre' AccountType'. Vous devez utiliser un type qui a ce membre. – Oded

+0

J'ai ajouté la définition de classe du type AccountInfoCustomer qui est utilisée pour l'interrogation. C'est ce qui est stocké en tant qu'objet. Donc, quand je fais une requête avec un classeur, je m'attends à ce qu'il renvoie un résultat. – Muthu

+0

Cela n'aide pas. Vous montrez une requête par 'UserAccountInfo' qui ne contient pas de propriété' AccountType' ou 'User'. Le code que vous avez fourni ne sera pas compilé. Vous ne devez pas avoir collé 'UserAccountInfo' correctement. Nous ne pouvons pas aider si nous ne pouvons pas voir le problème. –

Répondre

0

Si vous avez un objet dans votre entité, vous ne pouvez pas interroger celui qui utilise linq. Vous pouvez interroger cela en utilisant le LuceneQuery, et la syntaxe non typée.