2010-08-25 8 views
1

J'utilise les services de génération de rapports SQL pour accéder à un service Web WCF.Reporting Services avec Entity Framework

Ma requête est:

<Query> 
<Method Name="GetADTHistory" Namespace="http://tempuri.org/"> 
<Parameters> 
     <Parameter Name="personId"><DefaultValue>7885323F-DE8D-47E5-907D-2991C838FF3E</DefaultValue></Parameter> 
    </Parameters> 
</Method> 
<SoapAction> 
http://tempuri.org/IResidentServiceFrontEnd/GetADTHistory 
</SoapAction> 
</Query> 

Ma mise en œuvre est

public List<ResidentDataTypes.Person> GetADTHistory(Guid personId) 
     { 
      using (ResidentDataTypes.MyEntities entity = new ResidentDataTypes.MyEntities()) 
      { 
       var person = (from a in entity.People.Include("ResidentAdts") 
           where a.PersonId == personId 
           select a); 

       if (person.Count() > 0) 
       { 
        return person.ToList(); 
       } 
       else 
       { 
        return new List<Person>(); 
       } 

      } 
     } 

Cela fonctionne bien s'il y a 2 ou plusieurs enregistrements ADT. Les services de génération de rapports voient correctement tous les champs de la base de données. Cependant, s'il n'y a qu'un seul service d'enregistrement d'enregistrements ADT, les colonnes "Personne" ne figurent pas dans les enregistrements ADT. Des idées?

Répondre

0

Il semble que vous ayez un problème de chargement impatient/paresseux. Je vous suggère d'exécuter et de tester la requête avec linqpad pour vérifier si elle inclut réellement les ResidentAdts dans le cas d'un enregistrement unique.

Je vous recommande également de vérifier ce fil: Linq to Entities Include Method Not Loading

Ajout de la balise « Linq » à votre question serait également utile.

+0

J'ai vérifié que les ADTs se chargent via le profileur SQL et que je peux voir les objets dans une fenêtre de surveillance de Visual Studio avant que la fonction retourne. – Biggle10

+0

Ensuite, cela peut être lié à la définition de votre rapport et à l'utilisation des enregistrements ADT dans les structures de rapport. Je ne pense pas que ce soit un problème de sérialisation mais il peut également être utile de vérifier si les données sérialisées correctement avec un client personnalisé qui appelle les services. Vous pouvez également utiliser un outil tel que Fiddler pour vérifier les données reçues du serveur si elles ne sont pas cryptées. – orka

+0

Lorsque j'utilise le client de test WCF, il dépend de cette méthode. Cela fonctionne pour d'autres méthodes sur le même service. Je vais chercher à utiliser Fiddler. – Biggle10