none
Sharepoint ListenDaten mittels Linq ändern oder geht nur die Abfrage RRS feed

  • Frage

  • Hallo,

    ich habe mir nach einer Anleitung im Web ein Webpart gebaut das mit Linq auf eine Liste zugreift und diese ausliest.

    Habe mit SPMetal eine Klasse erstellt und das ganze abgefragt. Klappt auch wunderbar.

                MylibDataContext hrDC = new MylibDataContext("http://SharePoint");
    
                var jobs = from jobList in hrDC.Calendar  orderby jobList.Title
               select new
               {
                   jobList.Title,
                   jobList.StartTime,
                   jobList.EndTime,
                   jobList.Xtime2
               };

    Meine Frage ist kann ich mit meiner mittels SPMetal erstellten Klasse die Daten auch verändern???

    Also ist es möglich das ich mit Linq meine Daten in einer Sharepoint liste ändern kann oder ist das nur zum Abfragen geeignet.

    Danke für jeden Hinweis

    Gruss 

    Frederick

    Donnerstag, 4. Oktober 2012 20:20

Antworten

  • Hi Fsteinke,
    mit dem LinQ-Ausdruck erzeugst Du neue (anonyme) Objekte. Änderungen der Eigenschaften in diesen Objekte wirken sich nicht auf die Daten im SharePoint aus.
     
    Wenn Du Dir jedoch im LinQ-Ausdruck die Originalobjekte geben lässt, dann kannst Du die Eigenschaftswerte ändern und  hrDC.SubmitChanges() die Änderungen in die SharePoint-Liste zurückschreiben.
     
    --
    Viele Gruesse
    Peter
    Samstag, 6. Oktober 2012 13:10
  • Hallo Frederick,

    wie Peter schon gesagt hat selektierst du nur anonyme Objekte aus der vorhandenen Menge. Wenn du mit SPMetal den LINQ2SharePoint Context erstellst, werden - entsprechend der ContentTypes auf deiner SharePoint-SiteCollection - Models erstellt. 

    Angenommen du hast einen ContentType Customer der in der Customers Liste verwendet wird, so kannst du dann wie folgt einen neuen Kunden erstellen

    using(var ctx = new MySharePointSiteDataContext("http://mysharepointsite")){
    
      var customer = new Customer(){
        FirstName = "Thorsten",
        LastName = "Hans",
        IsDeveloper = true
      };
      
      ctx.Customers.InsertOnSubmit(customer);
      ctx.SubmitChanges();
    }

    Darüber hinaus solltest du dir auf jeden Fall angewöhnen den LINQ Context zu disposen, weil sonst unmanaged Resourcen nicht freigegeben werden und im Speicher unnötig Platz in Anspruch nehmen. Ich habe zum Thema LINQ 2 SharePoint einen Artikel im SharePoint Adventskalender 2011 veröffentlicht den du hier (http://sharepointadvent.de/2011/12/04/linq-2-sharepoint/) finden kannst.

    Thorsten


    Es soll Fälle geben, in denen die Suche bereits die Antwort auf deine Frage weiß.


    Donnerstag, 11. Oktober 2012 21:46

Alle Antworten