.NET Tutorials, Forums, Interview Questions And Answers
Welcome :Guest
 
Sign In
Register
 
Win Surprise Gifts!!!
Congratulations!!!


Top 5 Contributors of the Month
david stephan

Home >> Articles >> SharePoint >> Post New Resource Bookmark and Share   

 Subscribe to Articles

LINQ and SPMetal in SharePoint 2010

Posted By:Jean Paul       Posted Date: November 30, 2012    Points: 200    Category: SharePoint    URL: http://www.dotnetspark.com  

n this article we will learn LINQ and SPMetal tool. This information is necessary in the real world programming scenarios.
 

In this article we can explore some of the advanced programming areas.

·
  LINQ to SharePoint
·  SPMetal

LINQ to SharePoint is a new feature of SharePoint 2010.  LINQ stands for Language Integrated Query which is a part of .NET Language. The aim of LINQ is to support different data sources using the same Typed Query Syntax.  Presently it supports Objects, Datasets, SQL, Entities, XML etc.

Why we need LINQ?


You might have noted that the previous List Programming examples did not used proper column name access.  LINQ allows us to access the List in a Typed manner.  Adding more clarity we can access the list items based on the column names which we usually do with the databases.

Example:
 var result = from c in Citizen where c.Name == “John” select c;

What is SPMetal?


As we will be creating custom lists having custom column names, we need to generate the Entity Model.  The SPMetal.exe is the tool which helps in generating the Model classes.
Although we can create the Model classes manually, it will be a tedious job and error prone.  Using SPMetal would be the right approach to model classes.

Activities


Following are the activities performed in this article:

1.  Manager List Creation
2.  Entity Creation
3.  Read using LINQ
4.  Insert Entity
5.  Update Entity
6.  Delete Entity



Experimenting with LINQ and SPMetal

To start with create a custom list inheriting from Custom List and name it as Manager.  Add the following custom columns and data:
 
Generating the Entity Models

Now we can generate the Entity Model for the above List.

You can get the SPMetal.exe inside the following folder:

  C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\BIN


Open a command prompt and go to the specified folder:


 
Now run the following command: 

  SPMetal.exe /web: http://YOURSITE /code: SiteEntities.cs

Wait for a while and you will be ready with the new file.  Open the file SiteEntities and you can see the Manager class is contained inside.


 
Create Application

Create a new SharePoint > 2010 > Console Application (targeting .Net 3.5 framework) and add the SiteEntities.cs file into it.


 
Add reference to the following assembly:


 
You can try with the following operations Read, Insert, Update, Delete using LINQ to SharePoint

Selecting an Item

Now we are trying to select the managers with country as USA:

using (SiteEntitiesDataContext context = new SiteEntitiesDataContext("http://appes-pc"))
{
  var result = context.Manager.Where(m => m.Country == "USA");

  foreach (ManagerItem manager in result)
  {
  Console.WriteLine(manager.Name);
  }
}


Note: You can use LINQ or Lambda Expression to do the query.  In the above example I have used Lambda.
On executing the application you can see the following results.


 
Inserting an Item

For inserting a new item into the Manager list, use the following code:

using (SiteEntitiesDataContext context = new SiteEntitiesDataContext("http://appes-pc"))
{
  ManagerItem manager = new ManagerItem();
  manager.Name = "New Manager";
  manager.Address = "New Address";
  manager.Country = "New Country";

  context.Manager.InsertOnSubmit(manager);
  context.SubmitChanges();
}


After executing the application, open the Manager list inside SharePoint as shown below:


 
Updating an Item

For updating an item inside SharePoint use the following code:

using (SiteEntitiesDataContext context = new SiteEntitiesDataContext("http://appes-pc"))
{
  ManagerItem manager = context.Manager.Where(m =>  
  string.IsNullOrEmpty(m.Title)).FirstOrDefault();
  if (manager != null)
  manager.Title = "New Title";

  context.SubmitChanges();
}


You can see the updated entity inside SharePoint:


 
Deleting an Item

For deleting an item inside SharePoint use the following code:

using (SiteEntitiesDataContext context = new SiteEntitiesDataContext("http://appes-pc"))
{
  ManagerItem manager = context.Manager.Where(m => m.Title.Length > 3).FirstOrDefault();
  if (manager != null)
  context.Manager.DeleteOnSubmit(manager);

  context.SubmitChanges();
}


You can see that the item is deleted inside SharePoint:




This concludes our Read, Insert, Update, Delete operations using LINQ to SharePoint.  Hope the topics are understood by the reader.

References

  http://msdn.microsoft.com/en-us/library/ee535491.aspx
  http://msdn.microsoft.com/en-us/library/ee538255.aspx

Summary


In this article we have explored LINQ and SPMetal tool.  This information is necessary in the real world programming scenarios.

 Subscribe to Articles

     

Further Readings:

Responses

No response found. Be the first to respond this post

Post Comment

You must Sign In To post reply
Find More Articles on C#, ASP.Net, Vb.Net, SQL Server and more Here

Hall of Fame    Twitter   Terms of Service    Privacy Policy    Contact Us    Archives   Tell A Friend