Friday, June 24, 2011

PetaPoco with parameterised stored procedure and Asp.Net MVC

I have been playing with Micro ORMs as this is very interesting things that are happening in developer communities and I already liked the concept of it. It’s tiny easy to use and can do performance tweaks. PetaPoco is also one of them I have written few blog post about this. In this blog post I have explained How we can use the PetaPoco with stored procedure which are having parameters. I am going to use same Customer table which I have used in my previous posts. For those who have not read my previous post following is the link for that.

Get started with ASP.NET MVC and PetaPoco
PetaPoco with stored procedures

Now our customer table is ready. So let’s Create a simple process which will fetch a single customer via CustomerId. Following is a code for that.

CREATE PROCEDURE mysp_GetCustomer
 @CustomerId as INT
AS
SELECT * FROM [dbo].Customer where  CustomerId=@CustomerId

Now we are ready with our stored procedures. Now lets create code in CustomerDB class to retrieve single customer like following.

using System.Collections.Generic;

namespace CodeSimplified.Models
{
  public class CustomerDB
  {
      public IEnumerable<Customer> GetCustomers()
      {
          var databaseContext = new PetaPoco.Database("MyConnectionString");
          databaseContext.EnableAutoSelect = false;
          return databaseContext.Query<Customer>("exec mysp_GetCustomers");

      }
      public Customer GetCustomer(int customerId)
      {
          var databaseContext = new PetaPoco.Database("MyConnectionString");
          databaseContext.EnableAutoSelect = false;
          var customer= databaseContext.SingleOrDefault<Customer>("exec mysp_GetCustomer @customerId",new {customerId});
          return customer;
      }
  }
}

Here in above code you can see that I have created a new method call GetCustomer which is having customerId as parameter and then I have written to code to use stored procedure which we have created to fetch customer Information. Here I have set EnableAutoSelect=false because I don’t want to create Select statement automatically I want to use my stored procedure for that. Now Our Customer DB class is ready and now lets create a ActionResult Detail in our controller like following

using System.Web.Mvc;

namespace CodeSimplified.Controllers
{
  public class HomeController : Controller
  {
      public ActionResult Index()
      {
          ViewBag.Message = "Welcome to ASP.NET MVC!";

          return View();
      }

      public ActionResult About()
      {
          return View();
      }

      public ActionResult Customer()
      {
          var customerDb = new Models.CustomerDB();
          return View(customerDb.GetCustomers());
      }
      public ActionResult Details(int id)
      {
          var customerDb = new Models.CustomerDB();
          return View(customerDb.GetCustomer(id));
      }
  }
}

Now Let’s create view based on that ActionResult Details method like following.

AddView

Now everything is ready let’s test it in browser. So lets first goto customer list like following.

CustomerList

Now I am clicking on details for first customer and Let’s see how we can use the stored procedure with parameter to fetch the customer details and below is the output.

CustomerDetails

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

Shout it

kick it on DotNetKicks.com
Share:
Monday, June 20, 2011

PetaPoco with stored procedures

In previous post I have written that How we can use PetaPoco with the asp.net MVC. One of my dear friend Kirti asked me that How we can use it with Stored procedure. So decided to write a small post for that. So let’s first create a simple stored procedure for customer table which I have used in my previous post. I have written simple code a single query that will return customers. Following is a code for that.

CREATE PROCEDURE mysp_GetCustomers
AS
SELECT * FROM [dbo].Customer
Now our stored procedure is ready so I just need to change my CustomDB file from the my previous post example like following.
using System.Collections.Generic;

namespace CodeSimplified.Models
{
  public class CustomerDB
  {
      public IEnumerable<Customer> GetCustomers()
      {
          var databaseContext = new PetaPoco.Database("MyConnectionString");
          return databaseContext.Query<Customer>("exec mysp_GetCustomers");

      }
  }
}

That's It. Now It's time to run this in browser and Here is the output.

Output

In future post I will explain How we can use PetaPoco with parameterised stored procedure. Hope you liked it.. Stay tuned for more.. Happy programming.

Shout it

kick it on DotNetKicks.com
Share:
Friday, June 17, 2011

Get started with ASP.NET MVC and PetaPoco

Micro ORM are having their pro and cons and right now its a buzz in the Microsoft.NET developers buzz. I personally like a Micro ORM Concept and I already posted some blog posts with asp.net mvc and dapper Micro ORM. Today I am going to explain how we can use PetaPoco in asp.net mvc application. First lets get little bit introduction about PetaPoco.

PetaPoco is developed by Top Ten software and It’s Micro ORM inspired by Masive and Dapper. Following is link where you can get more information about that.
http://www.toptensoftware.com/petapoco/.

To install PetaPoco in our application first we need to add a library reference as Its already available there. so Let’s add library reference like following.

AddlibraryReference

Once click on add library reference a dialog box appears to find the the library package like following. I have written PetaPoco in search box and it will be appear in list like following.

PetaPocoNugetPackage

Select first one then click Install and It will install the PetaPoco in your application. Once installation done you will have one t4 teamplte and one PetaPoco.cs file in your model section of ASP.NET application like following.

SolutionExplorer

Now we are ready use the PetaPoco in our application. Now let’s use same DB which we have use for dapper demonstration let’s take same customer table like following.Following is a script to create table.

/****** Object:  Table [dbo].[Customer]    Script Date: 06/17/2011 02:27:34 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [dbo].[Customer](
   [CustomerId] [int] IDENTITY(1,1) 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]

Now I have inserted some sample data in the table and now its ready to use. Now I have added a Model Entity class which contains same properties as Table columns. Just like following.
namespace CodeSimplified.Models
{
   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 ready with our class I have create a new class called CustomerDB to fetch customer from the database. In that class I have created method called GetCustomers which will fetch all the customer from database. Here I have created a database object of PetaPoco and then I have using Its query method to query database. Following is a code for that.
using System.Collections.Generic;

namespace CodeSimplified.Models
{
   public class CustomerDB
   {
       public IEnumerable<Customer> GetCustomers()
       {
           var databaseContext = new PetaPoco.Database("MyConnectionString");
           return databaseContext.Query<Customer>("Select * from Customer");
       }
   }
}

Now as this is for demo purpose only lets create a method in Home Controller class to get customers like following.
using System.Web.Mvc;

namespace CodeSimplified.Controllers
{
   public class HomeController : Controller
   {
       public ActionResult Index()
       {
           ViewBag.Message = "Welcome to ASP.NET MVC!";

           return View();
       }

       public ActionResult About()
       {
           return View();
       }

       public ActionResult Customer()
       {
           var customerDb = new Models.CustomerDB();
           return View(customerDb.GetCustomers());
       }
   }
}

Now once done we with Customer Method in Home Controller let’s create view for that. Here I have created a strongly typed view like following for customers.

View

Now we are done with our view also So let’s run the project and let’s see output in browser. You can see output in browser as expected like following.

Output

So it’s very easy to use PetaPoco with ASP.NET MVC. Hope you liked it. Stay tuned for more..

Shout it

kick it on DotNetKicks.com
Share:
Thursday, June 16, 2011

Tech-Ed on Road 2011- Ahmedabad–A great event

Last Saturday on June 11,2011 Ahmedabad was having Microsoft Tech-Ed on Road event. I was fortunate to being part of it. I have attended many community events in Ahmedabad but this time we get overwhelming response and approx. 300 to 400 persons where there in person and organizers were having hard time to arrange seats for them.

DSCN0369

As always first event was started by welcome note where Pinal Dave has delivered a very short and sweet welcome note and then we have got our first speaker Mahesh Dhola on Lightswitch on cloud. In his session he has shown us some excellent features of the Visual Studio Lightswitch . He has created a CRUD Silverlight application without writing zero lines of code and with all the business validation and all the basic stuff that required for a application. The session contained lots practical demos.

DSCN0373

After that session we had very own Technology Evangelist Pinal Dave. He has taken session on SQL Server Waits and Queues – Your gateway to performance troubleshooting. In his session he has explained what is the use of waits and queues and How we can increase the performance of our database with solving problems related waits and queues. Hi has made us fill that there is simple solutions to big problems and He also showed demo of some of the waits types. As our another speaker Harish Vaidyanathan said Pinal’s session was full of drama and emotions.

DSCN0389

After that we have got another great speaker Harish Vaidyanathan. Who has taken session on HTML5- Future of web. He has got some excellent demos of HTML5 and CSS3 and also he has explained some of the features of Internet Explorer 9 and also explained How IE9 utilized resources on machine to serve web content faster then other browsers. We have learned a lots from him and we have proud to have him at Ahmedabad.

DSCN0403

After session of HTML5 we had lunch and its a great way to meet people and exchange your knowledge with them. I have met many great people over there who are already serving community to a lot. After the lunch we had a small session and demo from Microsoft MVP Dhananjay Kumar. In his session he has delivered and showed demo of some of cool features of Microsoft new windows phone operating system called Windows Phone 7 Mango. It was to great to see multitasking third party applications.

DSCN0421

After that We have one of the great session of the event. Our own proud of Ahmedabad the SQL and XML Guru Jacob Sebastian. He has delivered excellent session on TSQL Worst practices. In his sessions we have gone through some of the excellent scenarios where SQL Queries looks fine and work in some scenarios but it can be dangerous in some of the scenario. Usually we don’t care of that but he made us feel that we should not use this kind of queries.

DSCN0430

After that we have got another good session about from our local Guys Tejas Shah who has delivered session on ASP.NET Tips and Tricks. In that he has explained some of basic features of asp.net with best practice to use them.

DSCN0433

After that We has small demos of from the Kaushal Bhavsar about Silverlight 5 features.

DSCN0434

After that we have some quiz and also announced some of winners for quiz one of my friend Kirti Darji also got pen drive a part of quiz winner.

DSCN0416

It was a great event and I would to take this opportunity to thanks Microsoft and Ahmedabad User .NET groups and other organizers to have such kind of events. I am also looking for some of forthcoming events. Following are some of links from where you can find presentations and scripts that are used in demos.

HTML5 Beauty of Web -By Harish Vaidyanathan
TSQL Worst Practices- By Jacob Sebastian
SQL SERVER Performance troubleshooting using Waits and Queues -By Pinal Dave
ASP.NET Tips and Tracks -By Tejas Shah
LightSwitch on cloud- By Mahesh Dhola

Shout it
Share:
Wednesday, June 15, 2011

Important milestone achieved!!- I got 300000 visitors for my blog

I have been writing this blog since last four years and I am working on hard on this to server community which I love most as much as I can. Here I got great news from www.sitemeter.com that my blog has achieved 300000 mark.  I would like to take this opportunity to thanks all my readers who has supported me all time whenever I write blogs. I got some nice appreciations from people and that’s encourage me to write more blogs.

Followings are my statistics from the sitemeter.com. Till I was writing this blog post I got 304412 visits to my blog and 368759 page views from my blog. Following are screenshots of my statistics.

Vistors

Pageviews

Pageviews

Here is another one from blogger itself that is saying that I am getting 22500 page views last moth.

GooglePageview

When I get appreciation from you guys like this then its feels great. Once this occasion I would like to tell you that if you are having passion for any technologies then please do write blogs. Because you are not going to share it you are not going to gain more knowledge.

Shout it
Share:

Maintaining Browser History for Ajax events through script manager in asp.net

In one of our project we have requirement of maintaining history of Ajax events. After doing some search on the web I have found one interesting capabilities of Script Manager control. I have found that there is one property called “EnableHistory” which will enable history for all the Ajax Event for which you have created the History Point. So Let’s first take a simple example with Ajax Tab and we are maintaining history of tab Navigation. To add the Ajax tab we first need the AjaxToolKit. So I have download the AjaxToolKit and Added Reference to my project like below.

Reference

Once I have done with adding reference I have written some asp.net HTML code to create Three tab and Also added a script manager like following which Enable history =”true” property and Navigate event. Like following.

<%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true"
 CodeBehind="Default.aspx.cs" Inherits="WebApplication2._Default" %>
 <%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="asp" %>
<asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent">
</asp:Content>
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
 <asp:ScriptManager id="scriptManager" runat="server" EnableHistory="true" OnNavigate="scriptManager_Navigate">
 </asp:ScriptManager>
 <asp:UpdatePanel ID="updatePanelTab" runat="server" ChildrenAsTriggers="true">
     <ContentTemplate>
         <asp:TabContainer ID="ajxTab" runat="server" ActiveTabIndex="0"  AutoPostBack="true" OnActiveTabChanged="ajxTab_ActiveTabChanged">
 <asp:TabPanel ID="homTab" runat="server" HeaderText="home" >
                     <ContentTemplate>
                         Home
                     </ContentTemplate>
 </asp:TabPanel>
  <asp:TabPanel ID="aboutUsTab" runat="server" HeaderText="About us" >
                     <ContentTemplate>
                         About Us
                     </ContentTemplate>
 </asp:TabPanel>
  <asp:TabPanel ID="contactUsTab" runat="server" HeaderText="Contact us" >
                     <ContentTemplate>
                         Contact us
                     </ContentTemplate>
 </asp:TabPanel>
 </asp:TabContainer>
     </ContentTemplate>
 </asp:UpdatePanel>

</asp:Content>

Here in the above Code I have created Three tabs Home,About us and Contact us and I have putted that in update panel and Also I have enabled “Autopostback” to true so whenever tab will be changed it will post back the page. So now let us do the server side part. Here I have written code in two events. First one is from the script manager navigate event which will fire when we navigate pages thorough browser history and another one is the ActiveTabChanged event which will fire when we change Tab. In Script manager navigate I have written code to select tab based on the state from navigate event. In ActiveTabchanged event I have written code to create navigation history point which will register that in browser history. Following is the code for that.

using System;
using System.Web.UI;

namespace WebApplication2
{
 public partial class _Default : System.Web.UI.Page
 {
     protected void scriptManager_Navigate(object sender, HistoryEventArgs e)
     {
         string state = e.State["historyPoint"];
         ajxTab.ActiveTabIndex = Convert.ToInt32(state);
     }

     protected void ajxTab_ActiveTabChanged(object sender, EventArgs e)
     {
        if(scriptManager.IsInAsyncPostBack && !scriptManager.IsNavigating)
        {
            scriptManager.AddHistoryPoint("historyPoint",ajxTab.ActiveTabIndex.ToString(),ajxTab.ActiveTab.HeaderText);
        }
     }
 }
}
So code is completed now lets run the application and Check it in browser. It will be loaded like below.
WithoutHistory

Now once you browse page with some tab you can see history is enabled in browser and you can go back and forward with browser navigations like following.

AfterHistory

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

Shout it
kick it on DotNetKicks.com
Share:
Thursday, June 9, 2011

Finding Saturday,Sunday between date range in C#/ASP.NET

I know this post will sound basic to some of the people. But yesterday one of my reader asked me this question. So I decided to write this blog post . So lets first create a console application which will find the Saturday,Sunday between two dates just like following.

DateTimeConsoleApplication

Once you are ready with Console application. You need to write following code in that to find and print Saturday and Sunday between particular date range.

using System;

namespace DatimeApplication
{
   class Program
   {
       static void Main(string[] args)
       {
             DateTime startDate=new DateTime(2011,3,1);
             DateTime endDate = DateTime.Now;

             TimeSpan diff = endDate - startDate;
             int days = diff.Days;
             for (var i = 0; i <= days; i++)
             {
                 var testDate = startDate.AddDays(i);
                 switch (testDate.DayOfWeek)
                 {
                     case DayOfWeek.Saturday:
                     case DayOfWeek.Sunday:
                         Console.WriteLine(testDate.ToShortDateString());
                         break;
                 }
             }
           Console.ReadLine();
       }
   }
}
As you can see in above code I am finding Saturday and Sunday between 1st March 2011 and today. So I have taken two variables called startDate and endDate. After that I have got difference between them and then via for loop I am checking that day of week is Saturday or Sunday then I am printing that. Now lets run the application and lets check browser and Here you can see below output as expected.

Output

So as you can see it is very Easy. You can find any weekday that way. Hope you liked it. Stay tuned for more..

Shout it

kick it on DotNetKicks.com
Share:

Support this blog-Buy me a coffee

Buy me a coffeeBuy me a coffee
Search This Blog
Subscribe to my blog

  

My Mvp Profile
Follow us on facebook
Blog Archive
Total Pageviews