Surfacez une requête de services d'accès en ligne SharePoint pour une utilisation en externe
-
10-12-2019 - |
Question
Y a-t-il un moyen d'écrire une requête dans les services d'accès à SharePoint Online et de superposer ses résultats via des services Web ou le modèle d'objet client pour .NET?Comme la façon dont les tables sont surfacées comme des listes?
Fond
Nous avons une base de données d'accès qui est revêtue à l'aide des services d'accès pour SharePoint Online. J'ai reçu la tâche de récupérer certaines données de services d'accès en tant que fichier XML pour se nourrir d'un autre système.
Il existe une requête existante, écrite dans SQL pour obtenir ces données (à partir de l'heure avant que la base de données d'accès soit en ligne) très complexe et que je crains si je le convertitais en une camplaire ou utilisez LINQ pour créer la requête,Ça 1) il n'aura pas toutes les fonctions qui existent dans SQL, et 2) il deviendra ballonné, rendant lentement à courir et difficile à maintenir.
Exemple simplifié Query:
select *
from members m, info i
where m.id = i.memberid
and year(m.date) = 1900
UNION
select *
from members m
where m.id not in (select memberid from info)
UNION
select *
from members m, info i
where m.id = i.memberid
and i.date_to = (select max(date_to) from info where memberid = i.memberid)
Order By m.Name
La solution
I ended up doing this by using the C# client object model to import all the data from the relevant lists into an in-memory SQLite database, and then running a modified SQL query on the SQLite tables. As there wasn't that much data this was an acceptable method.