SPMetal LINQ - To SharePoint Delete 2010 Programmatically Using VS 2010

Today, in this article let’s play around with one of the interesting and most useful concepts in SharePoint 2010.


Introduction

 

Today, in this article let's play around with one of the interesting and most useful concepts in SharePoint 2010.

Question: What is a SPMetal LINQ to SharePoint Delete?

 

In simple terms "It enables creation of a DataContext object using SPMetal, by which we can delete the data of a custom list with the help of a LINQ query".

 

I think we are now good to go and implement this wonderful concept.

 

Step 1: Open the command prompt as an administrator and enter the following command by requesting a specific site:

 

Spmetal.exe /web:http://win-5d57sl2rvt1:9107/ /code:C:\Student.cs

 

After you have run this, the Student.cs file will be created in the C: Drive of your system directories.

 

Step 2: Open SharePoint 2010 central administration and navigate to specific site.

 

Step 3: Open up Visual Studio 2010 and create an "Empty SharePoint project":

Output1.gif

Step 4: Select "Deploy as a farm solution" and click the next button. Now an empty project will be created.

Output2.gif

 

Step 5: Add a new visual webpart for that project. Also add the Student.cs file into the project.

Output3.gif

 

Step 6: The complete code of visualwebpart1usercontrol.ascx looks like this:

 

<%@ Assembly Name="$SharePoint.Project.AssemblyFullName$" %>

<%@ Assembly Name="Microsoft.Web.CommandUI, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>

<%@ Register TagPrefix="SharePoint" Namespace="Microsoft.SharePoint.WebControls"

    Assembly="Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>

<%@ Register TagPrefix="Utilities" Namespace="Microsoft.SharePoint.Utilities" Assembly="Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>

<%@ Register TagPrefix="asp" Namespace="System.Web.UI" Assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" %>

<%@ Import Namespace="Microsoft.SharePoint" %>

<%@ Register TagPrefix="WebPartPages" Namespace="Microsoft.SharePoint.WebPartPages"

    Assembly="Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>

<%@  Control Language="C#" AutoEventWireup="true" CodeBehind="SPDeleteWPUserControl.ascx.cs"

    Inherits="SPMetalDeleteApp.SPDeleteWP.SPDeleteWPUserControl" %>

<center>

    <div>

        <table>

            <tr>

                <td colspan="2">

                    <asp:label id="Label1" runat="server" text="LINQ-TO-SharePoint Delete - SharePoint 2010 Programatically"

                        font-bold="true" font-size="Large" font-names="Verdana" forecolor="Maroon"></asp:label>

                </td>

            </tr>

            <tr>

                <td>

                    <asp:label id="Label7" runat="server" text="Please Enter ID" font-size="Large" font-names="Verdana"

                        font-italic="true"></asp:label>

                </td>

                <td>

                    <asp:textbox id="TextBox1" runat="server" width="117px"></asp:textbox>

                </td>

            </tr>

            <tr>

                <td colspan="2">

                    <br />

                    <asp:button id="Button1" runat="server" text="Delete Data" font-names="Verdana" width="282px"

                        backcolor="Orange" font-bold="True" onclick="Button1_Click" />

                </td>

            </tr>

            <tr>

                <td colspan="2">

                    <br />

                    <asp:label id="Label5" runat="server" font-bold="true" font-names="Verdana"></asp:label>

                </td>

            </tr>

        </table>

    </div>

</center>
 

Step 7: The complete code of visualwebpart1usercontrol.ascx.cs looks like this:
 

using System;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using Microsoft.SharePoint.Library;

using System.Linq;

using Microsoft.SharePoint.Linq;

namespace SPMetalDeleteApp.SPDeleteWP

{

    public partial class SPDeleteWPUserControl : UserControl

    {

        protected void Page_Load(object sender, EventArgs e)

        {

            TextBox1.Focus();

        }

        protected void Button1_Click(object sender, EventArgs e)

        {

            if (string.IsNullOrEmpty(TextBox1.Text))

            {

                Label5.Text = "Please Enter Some Values";

                Label5.ForeColor = System.Drawing.Color.Red;

            }

            else

            {

                StudentDataContext dataContext = new StudentDataContext("http://win-5d57sl2rvt1:9107/");

                EntityList<PersonListItem> listItem = dataContext.GetList<PersonListItem>("PersonList");

                var delete = (from r in dataContext.PersonList where r.Id == int.Parse(TextBox1.Text) select r).First();

                listItem.DeleteOnSubmit(delete);

                dataContext.SubmitChanges();

                Label5.Text = "Data Successfully Deleted";

                Label5.ForeColor = System.Drawing.Color.Green;

                TextBox1.Text = string.Empty;

            }

        }

    }

}
 

Step 8: Deploy the solution file and add the created webpart to SharePoint site:

 

 

Step 9: The output of the person list looks like this:

Output4.gif 

 

Step 10: The output of the application looks like this:


Output5.png 

 

Step 11: The output of the data deleting application looks like this:


Output6.png

 

Step 12: The output of the data deleted in person list looks like this:

Output7.gif 

I hope this article is useful for you.