Newsletter Developpez.com

Inscrivez-vous gratuitement au Club pour recevoir
la newsletter hebdomadaire des développeurs et IT pro

Developpez.com - Microsoft DotNET
X

Choisissez d'abord la catégorieensuite la rubrique :


LINQ et le nouveau modèle de données de SharePoint 2010

Date de publication : 28/11/2009

Par Stephane Eyskens (Publications de Stéphane Eyskens) (Blog)
 

L'objectif de cet article est d'analyser les principaux changements apportés par SharePoint 2010 dans son modèle de données. Une API LINQ est à présent disponible en standard. Nous allons donc voir comment manipuler le successeur des requêtes CAML et nous nous poserons la questions suivante : CAML est-il mort ou a-t-il encore de beaux jours devant lui?.

            

I. Introduction
II. Nouveau modèle relationnel
II-A. Le modèle en image
II-B. Les changements dans l'API liés à ce nouveau modèle
II-B-1. Enumerer les colonnes liées d'une liste
II-B-2. Ajouter une colonne liée
II-B-3. Gérer l'unicité d'une colonne
III. LINQ et l'acquisition de données
III-A. Acquisition d'un contexte LINQ
III-A-1. SPMetal
III-A-2. Exploiter la classe générée par SPMetal
III-B. Requêtes simples
III-C. Effectuer des jointures
IV. LINQ et la mise à jour de données
IV-A. Insertion d'éléments
IV-B. Mise à jour d'un élément
IV-C. Suppression d'un élément
IV-D. Mise à jour massive
IV-E. Gestion des conflits de mise à jour
IV-E-1. Les types de conflits
IV-E-2. Détection des conflits
IV-E-3. Résolution des conflits - Annulation de mise à jour
IV-E-4. Résolution des conflits - Confirmation de mise à jour
IV-E-5. Résolution des conflits - Confirmation/Infirmation partielle des conflits
V. Et le CAML dans tout cela?
V-A. Compatibilité arrière
V-B. Faut-il encore utiliser le CAML?


I. Introduction

SharePoint 2010 étant disponible en version Beta, vous pouvez désormais appréhender les nouveautés dont cette version regorge. Quelques statistiques ci et là démontrent que SharePoint 2010 correspond à une augmentation des API de plus ou moins 150%. Nous avons donc tous du pain sur la planche :).

Cet article se concentre sur l'une des grandes nouveautés liée à l'accès aux données qui était précédemment presque systématiquement réalisée via des requêtes CAML. Ces mêmes requêtes qui ont toujours eu tendance à décourager les développeurs dotnet "classiques" lors de leur apprentissage de SharePoint par leur singularité, complexité et limitations.

A la fin de cet article, vous pouvez télécharger un exemple complet de programme console permettant d'effectuer toute une série de tests de manipulations de données via LINQ. Des requêtes utilisant ou non des jointures, des mises à jour (update/insert/delete) d'éléments de liste et la gestion de conflits liés aux mises à jour sont démontrés dans ce programme et tout au long de l'article.

Vous pourrez par ailleurs télécharger un modèle de site (.stp) contenant les listes et les données sur lesquels se base le programme console.


II. Nouveau modèle relationnel

Il a toujours été reproché à SharePoint 2007 de ne pas offrir de modèle relationnel et d'intégrité référentielle entre les différentes listes d'un site. Ce type d'intégrité devait être prise en charge par des Event Handlers spécialement développés. Dans la même lignée, SharePoint n'offrait pas la possibilité de créer des colonnes uniques. Seules les colonnes de type Lookup représentaient des relations "logiques" entre les différences listes mais ni l'unicité ni l'intégrité n'étaient assurées nativement.

Ce manquement est à présent comblé par SharePoint 2010 qui offrent d'emblée la possibilité de créer de réelles relations entre les listes et d'appliquer des critères d'unicité sur les colonnes.


II-A. Le modèle en image


II-B. Les changements dans l'API liés à ce nouveau modèle


II-B-1. Enumerer les colonnes liées d'une liste


II-B-2. Ajouter une colonne liée


II-B-3. Gérer l'unicité d'une colonne


III. LINQ et l'acquisition de données



III-A. Acquisition d'un contexte LINQ


III-A-1. SPMetal


III-A-2. Exploiter la classe générée par SPMetal


III-B. Requêtes simples


III-C. Effectuer des jointures


IV. LINQ et la mise à jour de données


IV-A. Insertion d'éléments


IV-B. Mise à jour d'un élément


IV-C. Suppression d'un élément


IV-D. Mise à jour massive


IV-E. Gestion des conflits de mise à jour


IV-E-1. Les types de conflits


IV-E-2. Détection des conflits


IV-E-3. Résolution des conflits - Annulation de mise à jour


IV-E-4. Résolution des conflits - Confirmation de mise à jour


IV-E-5. Résolution des conflits - Confirmation/Infirmation partielle des conflits


V. Et le CAML dans tout cela?


V-A. Compatibilité arrière


V-B. Faut-il encore utiliser le CAML?



            

Valid XHTML 1.0 TransitionalValid CSS!

Copyright © Stephane Eyskens. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

Responsable bénévole de la rubrique Microsoft DotNET : Hinault Romaric -