2011-06-17 3 views
1

Je cherchais une interaction avec Sharepoint à partir d'un code C#. Fondamentalement, ce sera une petite application qui va ajouter/supprimer des données à un serveur distant sharepoint.Interaction avec sharepoint, plusieurs façons?

que j'ai trouvé beaucoup de choses, mais essentiellement deux choses:

Une fois que nous avons accès à un « ClientContext », et après que nous avons un « site », sur lequel on peut trouver « Liste », etc. ...

L'autre chose que je trouve est d'accéder à "SPSite", et nous avons "SPList", "SP ...", etc ..

ai-je raison? Est-ce différent pour accéder aux données? Pourquoi ça? Lequel dois-je utiliser? De quoi ça dépend?

Y a-t-il plus de possibilités avec l'une de ces façons?

Merci beaucoup :)

Edit: Je ne sais pas pourquoi, je ne peux pas mettre un "Salut" au début de ma question, désolé:/

Répondre

7

Le ClientContext, Site, Les classes Web et List font partie des client object model de SharePoint. Ils vous permettent de manipuler des objets SharePoint à partir de n'importe quelle machine client.

Les SPContext, SPSite, SPWeb et SPList cours font partie de SharePoint de server object model. Ils vous permettent de manipuler des objets SharePoint à partir du code déployé sur les serveurs SharePoint eux-mêmes.

Ces deux technologies ne sont pas utilisées de la même manière. Par exemple, la requête filtering et bulking sont des concepts importants du modèle d'objet client, mais pas du modèle d'objet serveur.

0

En plus de Frédéric Hamidi excellente réponse.

C'est probablement ce que vous cherchez http://www.bendsoft.com/net-sharepoint-connector/. Il se connecte via l'API SharePoint afin que vous puissiez l'utiliser pour le développement interne et externe de SharePoint. Tout d'abord, vous n'avez pas besoin d'apprendre CAML et utiliser SQL à la place.

Exemple

Insérer des données

public void SharePointConnectionExample1() 
{ 
    using (SharePointConnection connection = new SharePointConnection(@" 
       Server=mysharepointserver.com; 
       Database=mysite/subsite 
       User=spuser; 
       Password=******; 
       Authentication=Ntlm; 
       TimeOut=10; 
       StrictMode=True; 
       RecursiveMode=RecursiveAll; 
       DefaultLimit=1000; 
       CacheTimeout=5")) 
    { 
     connection.Open(); 
     using (SharePointCommand command = new SharePointCommand("UPDATE `mytable` SET `mycolumn` = 'hello world'", connection)) 
     { 
      command.ExecuteNonQuery(); 
     } 
    } 
} 

ou pour sélectionner les données de la liste à un DataTable

string query = "SELECT * FROM list"; 
conn = new SharePointConnection(connectionString); 
SharePointDataAdapter adapter = new SharePointDataAdapter(query, conn); 

DataTable dt = new DataTable(); 
adapter.Fill(dt); 

ou en utilisant une méthode d'aide pour remplir un DataGrid

string query = "Select * from mylist.viewname"; 
DataGrid dataGrid = new DataGrid(); 
dataGrid.DataSource = Camelot.SharePointConnector.Data.Helper.ExecuteDataTable(query, connectionString); 
dataGrid.DataBind(); 
Controls.Add(dataGrid); 

Prends mon wo Pour cela, le développement de SharePoint devient très amusant!

Salutations

+0

Je ne me connecterais pas à une API fournie via une API tierce supplémentaire. Il deviendra plus difficile pour vous et les autres de maintenir votre application. –

+0

Ouais, et je préférais le style de cadre Entity :) – J4N

+0

JC vous pourriez mal compris le but de ceci, c'est un ADO.NET adaptateur pour SharePoint qui traduit n'importe quelle requête que vous envoyez, une api tierce serait quelque chose de complètement différent à mon avis. C'est bon pour la normalisation et cela simplifie certainement le processus de travail avec SharePoint. –