Saturday, May 21, 2011

Delete with Dapper ORM and ASP.NET MVC 3

I have been writing few posts about Dapper ORM and ASP.NET MVC3 for data manipulation. In this post I am going to explain how we can delete the data with Dapper ORM. For your reference following are the links my previous posts.

Playing with dapper Micro ORM and ASP.NET MVC 3.0
Insert with Dapper Micro ORM and ASP.NET MVC 3
Edit/Update with dapper ORM and ASP.NET MVC 3

So to delete customer we need to have delete method in Our CustomerDB class so I have delete method into the CustomerDB class like following.

public bool Delete(int customerId)
{
try
{
    using (System.Data.SqlClient.SqlConnection sqlConnection = new System.Data.SqlClient.SqlConnection(Connectionstring))
    {
        sqlConnection.Open();
        string sqlQuery = "DELETE FROM [dbo].[Customer] WHERE CustomerId=@CustomerId";
        sqlConnection.Execute(sqlQuery, new {customerId});
        sqlConnection.Close();

    }
    return true;
}
catch (Exception exception)
{
    return false;
}
}
Now our delete method is ready It’s time to add ActionResult for Delete in Customer Controller like following. I have added two Action Result first will load simple delete with view and other action result will delete the data.
public ActionResult Delete(int id)
{
var customerEntities = new CustomerDB();
return View(customerEntities.GetCustomerByID(id));
}

//
// POST: /Customer/Delete/5

[HttpPost]
public ActionResult Delete(int id, FormCollection collection)
{
try
{
    var customerEntities = new CustomerDB();
    customerEntities.Delete(id);
    return RedirectToAction("Index");


}
catch
{
    return View();
}
}
Now It’s time to add delete view. So I have added strongly typed view like following.

DeleteView

Now everything is ready with code. So it’s time to check functionality let’s run application with Ctrl + F5. It will load browser like following.

ViewBeforeDelete

Now I am clicking on delete it will load following screen to confirm deletion.

DeleteConfirmation

Once you clicked delete button it will redirect back to customer list and record is delete as you can see in below screen.

ViewAfterDelete

So that’s it. Its very easy.. Hope you liked it.. Stay tuned for more..

Shout it
kick it on DotNetKicks.com
Share:
Friday, May 20, 2011

Edit/Update with dapper ORM and ASP.NET MVC 3

In last two post I have already written about Getting data and adding data with Dapper Micro ORM. In this post I will explain how we can use the dapper ORM for data update. For reference following is the two post links for the Dapper ORM Series.
Playing with dapper Micro ORM and ASP.NET MVC 3.0
Insert with Dapper Micro ORM and ASP.NET MVC 3
Now as you we have already created CustomerDB Class. In this database operation class we will add two more methods GetCustomerById and Update to get Customer based on CustomerId passed and another one is for updating data. Following is modified Customer DB Code.
public class CustomerDB
{
  public string Connectionstring = @"Data Source=DotNetJalps\SQLExpress;Initial Catalog=CodeBase;Integrated Security=True";

  public IEnumerable<Customer> GetCustomers()
  {
      using (System.Data.SqlClient.SqlConnection sqlConnection = new System.Data.SqlClient.SqlConnection(Connectionstring))
      {
          sqlConnection.Open();
          var customer = sqlConnection.Query<Customer>("Select * from Customer");
          return customer;

      }
  }

  public Customer GetCustomerByID(int customerId)
  {
      using (System.Data.SqlClient.SqlConnection sqlConnection = new System.Data.SqlClient.SqlConnection(Connectionstring))
      {
          sqlConnection.Open();
          string strQuery = string.Format("Select * from Customer where CustomerId={0}", customerId);
          var customer = sqlConnection.Query<Customer>(strQuery).Single<Customer>();
          return customer;

      }
  }
  public bool Update( Customer customerEntity)
  {
      try
      {
          using (System.Data.SqlClient.SqlConnection sqlConnection = new System.Data.SqlClient.SqlConnection(Connectionstring))
          {
              sqlConnection.Open();
              string sqlQuery = "UPDATE [dbo].[Customer] SET [FirstName] =@FirstName, [LastName] =@LastName,[Address] =@Address,[City] = @City WHERE CustomerId=@CustomerId";
              sqlConnection.Execute(sqlQuery, new {
                                                      customerEntity.FirstName, customerEntity.LastName, customerEntity.Address, customerEntity.City, customerEntity.CustomerId
                                          });
              sqlConnection.Close();

          }
          return true;
      }
      catch (Exception exception)
      {
          return false;
      }
  }
  public string  Create(Customer customerEntity)
  {
      try
      {
          using (System.Data.SqlClient.SqlConnection sqlConnection = new System.Data.SqlClient.SqlConnection(Connectionstring))
          {
              sqlConnection.Open();
           
              string sqlQuery = "INSERT INTO [dbo].[Customer]([FirstName],[LastName],[Address],[City]) VALUES (@FirstName,@LastName,@Address,@City)";
              sqlConnection.Execute(sqlQuery,
                                    new
                                        {
                                            customerEntity.FirstName,
                                            customerEntity.LastName,
                                            customerEntity.Address,
                                            customerEntity.City
                                        });

             
              sqlConnection.Close();

          }
          return "Created";
      }
      catch (Exception ex)
      {
          return ex.Message;
      }

  }

}


Now It’s time to modify Customer Controller. I have added two more Action Result Result like following. One for fetching data and populating view and then another one for the updating data and redirecting it to Index action result. Just like following.
public ActionResult Edit(int id)
{

 var customerEntities = new CustomerDB();
 return View(customerEntities.GetCustomerByID(id));
}

//
// POST: /Customer/Edit/5

[HttpPost]
public ActionResult Edit( Customer customer)
{
 try
 {
     // TODO: Add update logic here
     var customerEntities = new CustomerDB();
     customerEntities.Update(customer);
     return RedirectToAction("Index");
 }
 catch
 {
     return View();
 }
}
So now our ActionResult is also ready now let’s add time to add Edit View for displaying current edit data. So go edit action result and right click->Add View-> Popup will appear for that. Now let’s create a strongly typed view like following.

EditView
So now we have created view and all other stuff its time to run our application. Let’s run it and go to Customer View like following.

View
Now I am going to click edit and above data will filled in Edit View.

Edit
Now After modifying data I have clicked save and as you can see in below screen data is modified.

ModifiedView
So that’s it. It’s very easy. Stay tuned for more.. Hope you liked it..

kick it on DotNetKicks.com
Shout it
Share:
Thursday, May 19, 2011

Insert with Dapper Micro ORM and ASP.NET MVC 3

As I have already posted about the how to fetch data in my earlier post for Dapper ORM. In this post I am going to explain how we can insert data with the dapper ORM. So let’s extend the earlier post project. As explained in earlier post I have already created a class called CustomerDB this class will contains all the operation with Dapper Micro ORM. So For inserting data let’s first create CREATE method like following in CutomerDB Class like following. In that I have create a simple Insert Query in string and then using connection.execute method to execute method. Following is code for that.
public class CustomerDB
{
  public string Connectionstring = @"Data Source=DotNetJalps\SQLExpress;Initial Catalog=CodeBase;Integrated Security=True";

  public IEnumerable<Customer> GetCustomers()
  {
      using (System.Data.SqlClient.SqlConnection sqlConnection = new System.Data.SqlClient.SqlConnection(Connectionstring))
      {
          sqlConnection.Open();
          var customer = sqlConnection.Query<Customer>("Select * from Customer");
          return customer;

      }
  }

   
  public string  Create(Customer customerEntity)
  {
      try
      {
          using (System.Data.SqlClient.SqlConnection sqlConnection = new System.Data.SqlClient.SqlConnection(Connectionstring))
          {
              sqlConnection.Open();
           
              string sqlQuery = "INSERT INTO [dbo].[Customer]([FirstName],[LastName],[Address],[City]) VALUES (@FirstName,@LastName,@Address,@City)";
              sqlConnection.Execute(sqlQuery,
                                    new
                                        {
                                            customerEntity.FirstName,
                                            customerEntity.LastName,
                                            customerEntity.Address,
                                            customerEntity.City
                                        });

              sqlConnection.Execute(sqlQuery);
              sqlConnection.Close();

          }
          return "Created";
      }
      catch (Exception ex)
      {
          return ex.Message;
      }

  }

}
Now we are ready with Create Method for database now let’s create two ActionResult for the Creating customer like following in Customer Controller like following.
public ActionResult Create()
{
return View();
}

//
// POST: /Customer/Create

[HttpPost]
public ActionResult Create(Customer customer)
{
try
{
    // TODO: Add insert logic here
    var customerEntities = new CustomerDB();
    customerEntities.Create(customer);
    return RedirectToAction("Index");
}
catch
{
    return View();
}
}
Now we are ready with the both ActionResult. First ActionResult will return simple view of Create which we are going to create now and another ActionResult Create will get customer object from the form submitted and will call our create method of CustomerDB Class. Now it’s time to create a view for adding customer. Right Click return view Statement in Create Action Result and Click Add View and Just Create view like following.

CreateView
That’s it now we are ready. Now let’s test it in browser. Like following.

AddNew
Now let’s click and create and then it will redirect us to customer list page like following. Where you can see the newly added details.

View
So that’s it. Its very easy to Insert data with Dapper Micro ORM. Hope you like it…Stat tuned for more.

Note: For reference of this post you can also see my first post called -Playing with dapper Micro ORM and ASP.NET MVC 3.0.
kick it on DotNetKicks.com
Shout it
Share:
Wednesday, May 18, 2011

Microsoft Community Techdays at Ahmedabad-11th June 2011

Microsoft community TechDays are great events organized by Microsoft and every time I like to be part of it. Now once again this event date is announced  by Microsoft and its going to happen 11th June 2011. I would love to part of it. It’s a free event so you don’t need to pay for it.  It’s a good chance to do some social networking with Microsoft MVPS and professionals like Jacob Sebastian, Pinal Dave, Harish Vaidyanathan. You will also learn lots of new things.

Following is agenda for this event.

AGENDA

09:30am - 10:00am
Registration


10:00am - 10:15am
Welcome Note


LightSwitch On The Cloud! by Mahesh Dhola
10:15am to 11:15pm
The session would give introduction to Visual Studio Light Switch followed by the demo. The demo would give insight of developing Light Switch application and deploying to the Microsoft cloud offerings Windows Azure.


SQL Server Performance Troubleshooting using Waits and Queues by Pinal Dave
11:15am to 12:15pm
Just like a horoscope, SQL Server Waits and Queues can reveal your past, explain your present and predict your future. SQL Server Performance Tuning uses the Waits and Queues as a proven method to identify the best opportunities to improve performance. A glance at Wait Types can tell where there is a bottleneck. Learn how to identify bottlenecks and potential resolutions in this fast paced, advanced performance tuning session.

12:15pm - 01:15pm
Lunch

HTML5 - Future of the Web by Harish Vaidyanathan
01:15pm to 02:15pm
HTML5 will change the Web as we know it today. Join this session to know what's happening behind-the-scenes of this hugely important specification. Get an overview of the new features in HTML5, CSS3, SVG & DOM specifications. Better understand what the open challenges are and where HTML5 is leading to in the future.

TSQL Worst Practices by Jacob Sebastian
02:15pm to 03:15pm
This is an interactive session filled with exciting demos where we will go over a number of "good looking" TSQL usages that are often quite "dangerous" by means of killing performance as well as producting uncorrect and unexpected results.

03:15pm - 03:30pm
Tea Break

ASP.NET Tips and Tricks by Tejas Shah
03:30pm to 04:30pm
The session will focus on understanding of Asp.Net fundamentals and tricks that can be used in development with Demo. This session also covers how to improve application performance.
Demo Extravaganza & Gifts by Community

04:30pm to 05:30pm
Various community speakers will present insight on upcoming technology and interesting demos.
Community session

05:30pm
Thank you Note


Note: The above agenda is subject to change.

I will be there. It will be great fun and learning experience. Hope to see you guys at that event.

Shout it

kick it on DotNetKicks.com
Share:
Monday, May 16, 2011

Playing with dapper Micro ORM and ASP.NET MVC 3.0

Some time ago Sam Saffron a lead developer from stackoverflow.com has made dapper micro ORM open source. This micro orm is specially developed for stackovewflow.com for keeping performance in mind. It’s very good single file which contains some cool functions which you can directly use in your browser. So I have decided to have a look into it. You can download dapper code from the following location it’s a single static class file called SQLMapper.

http://code.google.com/p/dapper-dot-net/

So once you download that file you can use that file into your project. So I have decided to create a sample application with asp.net mvc3. So I have created a simple asp.net mvc 3 project called DapperMVC. Now let’s first add that SQLMapper class file into our project at Model Folder like following.

SQLMapper

Now let’s first create sample table from which we will fetch the data with the help of dapper file. I have created sample customer table with following script.

SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [dbo].[Customer](
 [CustomerId] [int] NOT NULL,
 [FirstName] [nvarchar](50) NULL,
 [LastName] [nvarchar](50) NULL,
 [Address] [nvarchar](256) NULL,
 [City] [nvarchar](50) NULL,
CONSTRAINT [PK_Customer] PRIMARY KEY CLUSTERED
(
 [CustomerId] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]

GO

Once I have created table I have populated some test data like following.

TestData

Now we are ready with database table Now its time to add a customer entity class. So I have created sample customer class with properties same as Database columns like following.

public class Customer
{
 public int CustomerId { get; set; }
 public string FirstName { get; set; }
 public string LastName { get; set; }
 public string Address { get; set; }
 public string City { get; set; }
}

Now we are done with the Customer Entity class then I have created a new class called CustomerDB and a created a GetCustomer Method where I have used Query Method of Dapper to select all customers with ‘select * from customer’ simple query. I know it’s not a best practice to write ‘select * from customer’ but this is just for demo purpose so I have written like this. Query method accepts query as parameter and returns IEnumerable<T> where T is any valid class. In our case it will be Customer which we have just created before. Following is the code for CustomerDB Class.

using System.Collections.Generic;

public class CustomerDB
{
 public string Connectionstring=@"Data Source=DotNetJalps\SQLExpress;Initial Catalog=CodeBase;Integrated Security=True";

 public  IEnumerable<Customer> GetCustomers()
 {
     using (System.Data.SqlClient.SqlConnection sqlConnection = new System.Data.SqlClient.SqlConnection(Connectionstring))
     {
         sqlConnection.Open();
         var customer = sqlConnection.Query<Customer>("Select * from Customer");
         return customer;

     }
 }

}

Now we are ready with our model classes now It’s time to Create a Controller so I have created a Customer Controller like following.

CustomerController

It will create customer controller in controller folder with by default ActionResult Index. I have modified Action Result just like to following to return customerEntities with IndexView.

public class CustomerController : Controller
{
 //
 // GET: /Customer/

 public ActionResult Index()
 {
     var customerEntities = new CustomerDB();
     return View(customerEntities.GetCustomers());

 }

}

Now we are ready with our Customer Controller and now it’s time to create a view from the customer entities. So I have just right clicked customer entities and Create a View like following.

AddingView

It will popup the following dialogbox where I have selected Razor View with Strongly Typed View. Also I have selected Customer Model class customer and selected list template like following.

RazorView

That’s it now we are done with all the coding and It’s now time to run the project and result is as accepted as following.

Browser

That’s it. Isn’t that cool? Hope you liked this. Stay tuned for more.. Happy programming

Shout it

kick it on DotNetKicks.com
Share:
Friday, May 13, 2011

Nav tag in HTML5

HTML5 is great new version of HTML with great features. I am exploring that in great details for our forthcoming projects. I found a great tag that can be used in all websites for the navigation. <nav> tag defines a area for navigation in whole HTML markup.

The HTML5 specification for nav tag is like following. You can find all the HTML 5 specification here.
The nav element represents a section of a page that links to other pages or to parts within the page: a section with navigation links. Not all groups of links on a page need to be in a nav element only sections that consist of major navigation blocks are appropriate for the nav element. In particular, it is common for footers to have a list of links to various key parts of a site, but the footer element is more appropriate in such cases, and no nav element is necessary for those links.
<nav> tags can be used as navigation area and under it you can put the group of links that will use for navigation of area. For example if you have downloaded the ASP.NET MVC3 tool update with HTML5 then you can see they have defined the navigation area with nav tags like following.

<nav>
   <ul id="menu">
       <li>@Html.ActionLink("Home", "Index", "Home")</li>
       <li>@Html.ActionLink("About", "About", "Home")</li>
   </ul>
</nav>

As you can see in above they putted Home and About link in the navigation. So now its with the nag tag the html mark-up is more readable. Once its loaded in browser it and if you view source it will be populate as groups of link in nav tag like following.


<nav>
               <ul id="menu">
                   <li><a href="/">Home</a></li>
                   <li><a href="/Home/About">About</a></li>
               </ul>
</nav>

So that’s it You can see its very easy to use and now we have very readable and clear markup with HTML5. Stay tuned for more.. Happy Programming.

Shout it

kick it on DotNetKicks.com
Share:

HTML5 Intellisense in Visual Studio 2010/2008

Recently I was playing with HTML5 and I was in need of the HTML5 intellisense in Visual Studio 2010. I found a great extension which will provide me a great intellisense for HTML5. I thought its great to share with you all.  You can download that tool from following link.

http://visualstudiogallery.msdn.microsoft.com/d771cbc8-d60a-40b0-a1d8-f19fc393127d

Once you download install it. You need to change your validation to HTML5 in your Visual Studio 2010 configuration. For that you have to go to Tools->Options->Text Editor->HTML->Validation and there you need to select the HTML5 like following.

ToolsForVisualStudio2010

That’s it now your visual studio 2010 or 2008 will have intellisense for HTM5. Just like following.

Intellisense

That’s it. Hope you like it. Stay tuned for more..Happy programming.

Shout it

kick it on DotNetKicks.com
Share:
Sunday, May 8, 2011

What’s new in SQL Server ‘Denali’ Management Studio.

Before sometime Microsoft has launched SQL Server Denali CTP a new version of SQL Server. I have downloaded it and install it on my machine. I have found variety of new features in SQL Server. Today I am going to explore some of the new features in SQL Server Denali Management Studio. Following are some of the new features of SQL Server Denali Management Studio.

New Font and New Colour Scheme:

First thing you notice when you start SQL Server Management Studio is the colour scheme it has nice blue theme just like Visual Studio 2010. Also if you see that now the default font is ‘Consolas’. Just like following.

ManagementStudio1

Multi monitor Support:

Now SQL Server management Studio also can be work in multi monitor also. You can drag each window and set it for another monitor.Now you can each window can appeared out of shell of SSMS and You can drag with each window in different monitor like following.

ManagementStudio2

Code Snippets:

Now there are lots of code snippets are available and you can that code snippets via right Click Query window-> Insert snippets like following.

ManagementStudio3

Once you click Insert snippets it will open lots of built in snippets and create syntax for you directly.

Zoom Functionality:

Now you can zoom the query editor window. There is a dropdown given in left bottom corner of the window and you can zoom the query editor windows as you need like following.

ManagementStudio4

There are many more features in SQL Server Denali Management studio. I have just explore few of them. For more details please visit following link which contains lots of list of new features.

http://msdn.microsoft.com/en-us/library/ms174219(v=sql.110).aspx

That’s it. Hope you like it.. Stay tuned for more.. Happy programming.

kick it on DotNetKicks.com
Share:
Saturday, May 7, 2011

Task list window in Visual Studio 2010

Task list is a great feature of visual studio and I think its most unappreciated features of Visual Studio 2010 and most of developers are not aware of it or don’t know about it and that’s why they are not using it. So I decided to write blog post about it.

As .NET Developer we spend lots of time writing code with Microsoft Visual Studio and sometimes we need to write comments for future reference like for debugging we need to some code undone or we need to write some code in future at that time this Task List feature of Microsoft Visual Studio comes very handy .

Let’s first see how we can configure Task List Window in Visual Studio to help us better in coding. You can configure Task List window options via Tools-> options then go to Environment and then click Task list then a window will appear like following.

TaskList1

Here you can see the Standard Token of Visual Studio Also you can add your own Tokens also..You can see task list window via View-> Task List window like following. or you can use short cut like Ctrl +\,T.

TaskList2

and Task list window will appear like below.

TaskList3

Task list windows show two kind of task list one 1) User Task 2) Token Comments.
User Task are like general comment or general task that developer need to remember during development of project. You can see the the in above picture I have added one task for login code.

As we already know we can configure various token comments via configuration area and that comments will listed in Task list window. Let’s write some like below which contains TODO Token and then we will list that stuff with Task list Window.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace Blogging
{
public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }
    public void DoSomething()
    {
        //TODO : I have to write code for do something
    }

    public void DoAnotherThing()
    {
        //TODO : I have also wirte code for Do another thing.
    }
}
}
As you can see in above code there are two TODO events and let’s see how it it list in task list windows so let’s open task list window and select comments from dropdown and here you go its appearing in TaskList window as following.

Tasklist4

That’s it. You can see Task list window is making developers life more easy. Hope you liked it. Stay tuned for more.

Shout it

kick it on DotNetKicks.com
Share:

What’s new in Internet Explorer 9?

Microsoft has recently launched the Microsoft Internet Explorer 9 and I have just installed it on it in my machine and I am quite amazed with the features its providing so I thought its worth to right a blog post about it.

The first and foremost thing you will notice about IE9 is a new slick interface. It has very nice user interface with address bar and tab are both on the same line. You can also enable old view like IE via right click->Show tabs on a separate Row. Like following.

IE91

You can change tab via like following.

IeTabs

and You can achieve same look like IE8 like following.

Ie92

Additionally clicking on the new tab it will present you a layout where you can see the most visited sites with the popular list popular stuff.

Ie93

Another use full feature will search enhancement where you can directly find the things with Bing search engine in your address bar just like below.

Search

You can turn off search suggestions via clicking on Turn off Suggestions. Also you can pin sites in IE9 just like you can pin the other things in windows 7. There are still lots of more features are there you can see all from the following sites.

http://msdn.microsoft.com/en-us/library/ff974378(v=vs.85).aspx
http://www.beautyoftheweb.com/

Shout it

kick it on DotNetKicks.com
Share:
Search This Blog
About Me
My Photo

Full Stack Developer,Blogger,Microsoft Mvp, Mentor, Life long learner, 10+ Years of Experience for JavaScript, web and Microsoft technologies. ASP.NET MVC,Web Forms,C#,AngularJs,Golang
Mvp profile
Subscribe to my blog

Enter your email address:

Follow us on facebook
Blog Archive
Total Pageviews