Saturday, September 24, 2011

NuGet package with multiple projects

Before some day one of my friend asked me to install NuGet in project another then startup project. At that time I don’t have any idea about it. So I did some R and D on web and found one easiest way to do it. So let’s first create a solution where we have more then one project in single solution. I have created a new solution and create three project in single solution as below.
  1. MyApplication- Main web application project.
  2. MyApplication.Business- This project contains all business logic classes of application
  3. MyApplication.Data- This project contains all data access layers classes of application
Its looks like following.

Nuget Package with multiple solutions and adding NuGet Package to more then one project

Now I want to add EFCodeFirst NuGet package to MyApplication.Data project as I want to use entity framework code first for database operations. To add new package with in the project. you can select project and then click ‘Manage NuGet Packages’ like following.

Manage Nuget Pakcage with multiple project

Once you click it will show a dialog for NuGet Packages  like following.

NuGetPacakge

I have selected EFCodeFirst and Once I clicked ‘Install’ . It has added reference to MyApplication.Data Project like following.

Entity Framework Nuget Package with multiple solution

That’s it. It’s very easy. Hope you like it..Stay tuned for more.. Till then happy programming and Namaste!!!.

Shout it
kick it on DotNetKicks.com
Share:
Wednesday, September 14, 2011

BigInteger in C# 4.0

In C# 4.0 Microsoft has added so many features and I love all most all the features. In today’s post we are going to discuss BigInteger Class. During programming some complex systems often we need a very big numbers. For example if we use some of asymmetrical cryptographic feature which require to use large numbers or we can give simple example of factorial where we sometime reached to limit of data type provided by C# compiler. At that time this BigInteger data type can be very handy. You can store 232 to 264 number in this data type. So its very big and you can copy very very big number in that data type.

So let’s take a simple example to write a factorial program. BigInteger data type comes under System.Numerics namespace. So first we have to add reference to our program to System.Numerics assembly like following.

Big Integer In C# 4.0 - Add Reference to System. Numeric

Now we have added the reference to System.Numeric so we are ready for code. Here in code I have just taken a very large number in big integer which is out of range of integer to test out. So I have assigned ‘39242937852522522’ to big integer object and printed that. Following is a code for that.

using System;
using System.Numerics;

namespace ExperimentConsole
{
    class Program
    {
        static void Main(string[] args)
        {
            BigInteger n = 39242937852522522;
            Console.WriteLine(n);
        }
    }
}
Let’s run code and see output like following as expected its printing value.

Output

If you are run same program with integer it will not compile. It will give ‘Can not covert type long to integer error’. That’s it. Hope you liked it. Stay tuned for more.. Till then happy programming. Namaste!!

Shout it
Share:
Friday, September 9, 2011

Entity framework and Stored procedure output parameter

One of my friend was having problem in Entity framework and stored procedure output parameter. He was confused how to use output parameter with stored procedures.So I did some search on internet and I found a great way to use output parameter so I thought I should write a blog post for the same. So in this blog post I am going to explain you how we can use output parameter of entity framework.

So let’s start coding for that.For demo, I have create a table called ‘Customer’ which contains just two columns CustomerId and CustomerName. Following is the script for that.

/****** Object:  Table [dbo].[Customer]    Script Date: 09/09/2011 00:18:33 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [dbo].[Customer](
    [CustomerId] [int] NOT NULL,
    [CustomerName] [nvarchar](50) NOT 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

Now as our table are ready. Let’s create a stored procedure which will return the number of records as output parameter. Following is script for that.

/****** Object:  StoredProcedure [dbo].[esp_GetCustomerCount]    Script Date: 09/09/2011 00:20:21 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[esp_GetCustomerCount]
    @CustomerCount INT OUTPUT
AS
    select @CustomerCount=COUNT(customerId) from Customer
GO

Now our database part is ready so its time to create a entity model. So first I have created a console application and I added a new entity model via project-> right click-> Add new item and selected ADO.NET Entity Model like following.

Entity Data Model for stored procedure output parameter

Once I clicked add a wizard will start asking for choosing model contents like following.

Choose model context for entity framework stored proecdure output parameter

Here I have selected Generate from database and clicked next it will ask for connection string. I have selected connection string and click next it will ask to select object of database. Here I have selected tables and  stored procedure which we have created earlier like following.

Stored procedure and tables with Entity Framework

Now once we have done our model creation its time to create a function import for store procedure. So do that we need to first open Experiment.edmx in visual studio like below.

Model Browser for Entity framework for stored procedure without parameter

Once you click Model browser it will  reopen model browser in right side of your edmx like following.

Model Browser in entity framework

Now in your store you need to expand store part and select stored procedure and click Add function import like following to create function for stored procedure.

Fuction import for entity framework stored procedure output parmeter

Once you click Add function import a dialog box will open to select stored procedure and return type like following.

GetCustomerCount function for Entity framework stored procedure output parameter


Here I have changed name of function called ‘GetCustomerCount’ now once you click OK it will create a function called ‘GetCustomerCount’ in entity framework model. Now its time to use that in code. Following is the code from where can find the output parameter value.

using System;

namespace ExperimentConsole
{
    class Program
    {
        static void Main(string[] args)
        {
            using (ExperimentEntities myContext = new ExperimentEntities())
            {
                System.Data.Objects.ObjectParameter output = new System.Data.Objects.ObjectParameter("CustomerCount", typeof(int));
                myContext.GetCustomerCount(output);
                Console.WriteLine(output.Value);
            }
        }
    }
}

Here in above code you can see that I have created a object parameter and passed that to function as output parameter is there. Once this function will complete execution it will return value and you can get value with .value property. I have printed that in console application. Following is the output as expected as I have added four records in database.

Output paremeter result for entity framework

So that’s it. It’s very easy to use output parameter. Hope you liked it. Stay tuned for more. Till then happy programming.. Namaste!!

Shout itkick it on DotNetKicks.com
Share:
Thursday, September 8, 2011

Jquery and ASP.NET- Set and Get Value of Server control

Yesterday one of my reader asked me one question that How can I set or get values from Jquery of server side element for example. So I decided to write blog post for this. This blog post is for all this people who are learning Jquery and don’t know how to set or get value for a server like ASP.NET Textbox. I know most of people know about it as Jquery is very popular browser JavaScript framework. I believe jquery as framework because it’s a single file which has lots of functionality.

For this I am going to take one simple example asp.net page which contain two textboxes txtName and txtCopyName and button called copyname. On click of that button it will get the value from txtName textbox and set value of another box. So following is HTML for this.

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Index.aspx.cs" Inherits="Experiment.Index" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
       
</head>
<body>
    <form id="form1" runat="server">
    <div>
            <asp:TextBox ID="txtName" runat="server" />
            <Br />
            <asp:TextBox ID="txtCopyName" runat="server"/>
            <Br />
            <asp:button ID="btnCopyName" runat="server" Text="Copy"  OnClientClick="javascript:CopyName();return false;"/>
    </div>
    </form>
</body>
</html>

As you can see in following code there are two textbox and one button which will call JavaScript function called to CopyName to copy text from one textbox from another textbox.Now we are going to use the Jquery for this. So first we need to include Jquery script file to accomplish the task. So I am going link that jquery.js file in my header section like following.

<head >
    <title></title>
    <script src="http://ajax.aspnetcdn.com/ajax/jquery/jquery-1.6.2.js"></script>  
</head>

Here I have used the ASP.NET Jquery CDN. If you want know more about Jquery CDN you can visit this link.

http://www.asp.net/ajaxlibrary/cdn.ashx

Now it’s time to write query code. Here I have used val function to set and get value for the element. Following is the code for CopyName function.

function CopyName() {
    var name = $("#<%=txtName.ClientID%>").val(); //get value
    $("#<%=txtCopyName.ClientID%>").val(name); //set value
    return false;
}

Here I have used val function of jquery to set and get value. As you can see in the above code, In first statement I have get value in name variable and in another statement it was set to txtCopy textbox. Some people might argue why you have used that ClientID but it’s a good practice to have that because when you use multiple user controls your id and client id will be different. From this I have came to know that there are lots of people still there who does not basic Jquery things so in future I am going to post more post on jquery basics.That’s it. Hope you like it.Stay tuned for more.. Happy programming and Namaste!!

Shout itkick it on DotNetKicks.com
Share:
Sunday, September 4, 2011

ReCaptcha in ASP.NET MVC3

As a web developer we know what is captcha is. It’s way to confirm users as they are human.Following is captcha definition per WikiPedia.
A CAPTCHA (play /ˈkæpə/) is a type of challenge-response test used in computing as an attempt to ensure that the response is generated by a person. The process usually involves one computer (a server) asking a user to complete a simple test which the computer is able to generate and grade. Because other computers are assumed to be unable to solve the CAPTCHA, any user entering a correct solution is presumed to be human. Thus, it is sometimes described as a reverse Turing test, because it is administered by a machine and targeted to a human, in contrast to the standard Turing test that is typically administered by a human and targeted to a machine. A common type of CAPTCHA requires the user to type letters or digits from a distorted image that appears on the screen.
You can find more details about that on following link.

http://en.wikipedia.org/wiki/CAPTCHA.

Google ReCaptcha Service:

Google provide Recaptcha service free of charge to confirm users whether they are human or computer. We can directly use the recaptcha service with there api. You have to create a private key for that and that key will validate domains against it. Even we can create the global key for all the keys. You can find more information about it from below link.

http://www.google.com/recaptcha/learnmore

ReCaptcha Web helpers in ASP.NET MVC 3:

As per I have also written in my previous post. ASP.NET Web helpers from Microsoft comes inbuilt with tools update. If you not installed it then you have to download NuGet package for it. You can refer my previous post for this.

Now we have all things ready its time to write ReCaptcha code in ASP.NET MVC. First we have create key for recaptcha service. I have created it via following link. It’s very easy.

https://www.google.com/recaptcha

Now let’s start coding. Recaptcha web helper renders a captcha control in your web form so you can validate this. Following is code which will render captcha control.
@ReCaptcha.GetHtml(theme: "red")
It's take four argument
  1. Theme- theme specify the color and look for ReCaptcha control. You can have to put theme name over there
  2. Language- You need to specify the captcha challenge language
  3. TabIndex- Tab Index for this control
  4. PublicKey- A unique public key which we have created for our domain.

Following is a code how to use above code in real time. I have updated standard logon control template for ASP.NET MVC.
@model CodeSimplifiedTest.Models.LogOnModel

@{
    ViewBag.Title = "Log On";
    ReCaptcha.PublicKey=@"6LedqMcSAAAAAJgiIjKlyzzV2czbGOPvij1tc39A";
}

<h2>Log On</h2>
<p>
    Please enter your user name and password. @Html.ActionLink("Register", "Register") if you don't have an account.
</p>

<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery-1.5.1.min.js")" type="text/javascript"></script>
@Html.ValidationSummary(true, "Login was unsuccessful. Please correct the errors and try again.")

@using (Html.BeginForm()) {
    <div>
        <fieldset>
            <legend>Account Information</legend>

            <div class="editor-label">
                @Html.LabelFor(m => m.UserName)
            </div>
            <div class="editor-field">
                @Html.TextBoxFor(m => m.UserName)
                @Html.ValidationMessageFor(m => m.UserName)
            </div>

            <div class="editor-label">
                @Html.LabelFor(m => m.Password)
            </div>
            <div class="editor-field">
                @Html.PasswordFor(m => m.Password)
                @Html.ValidationMessageFor(m => m.Password)
            </div>

            <div class="editor-label">
                @Html.CheckBoxFor(m => m.RememberMe)
                @Html.LabelFor(m => m.RememberMe)
            </div>

            <p>
               @ReCaptcha.GetHtml(theme: "red")
            </p>
           
        </fieldset>
    </div>
}

As you can see in above code for recaptcha public key and Recaptcha.GetHtml part. Now its time to captcha validation in server side code in controller. As I have used standard logon template for this.I have modified Logon Action Result in Account controller like following.

[HttpPost]
public ActionResult LogOn(LogOnModel model, string returnUrl)
{
    if(!ReCaptcha.Validate(privateKey:"6LedqMcSAAAAAJgiIjKlyzzV2czbGOPvij1tc39A"))
    {
        return Content("Failed");
    }
  
    if (ModelState.IsValid)
    {
        if (Membership.ValidateUser(model.UserName, model.Password))
        {
            FormsAuthentication.SetAuthCookie(model.UserName, model.RememberMe);
            if (Url.IsLocalUrl(returnUrl) && returnUrl.Length > 1 && returnUrl.StartsWith("/")
                && !returnUrl.StartsWith("//") && !returnUrl.StartsWith("/\\"))
            {
                return Redirect(returnUrl);
            }
            else
            {
                return RedirectToAction("Index", "Home");
            }
        }
        else
        {
            ModelState.AddModelError("", "The user name or password provided is incorrect.");
        }
    }

    // If we got this far, something failed, redisplay form
    return View(model);
}

Here I have validated the captcha control with public key and if validation failed then it will sent failed message. Now it’s time to run that in browser and let’s see output.

RecapthaControlOuput

That’s it. Its easy to integrate. Hope you like it..Stay tuned for more.. Till then Happy Programing..Namaste!!

Shout itkick it on DotNetKicks.com
Share:
Saturday, September 3, 2011

www.dotnetjalps.com new domain for personal blog

After more then 4 years of blogging I have decided to migration my personal blog to its own domain http://www.dotnetjalps.com. There are few reasons why I have migrated my blog to new domain.
  1. Custom domain is your own identity. So you can create your brand.
  2. Now all page ranks and All SEO belongs to my custom domain instead of blogger platform.
  3. SEO will be more easy then standard custom domain.
  4. I want to reach more people and its easy with your custom domain
  5. People will share bookmarks with my custom domain. So If I migrated my blog to another plate all things will remain same.
  6. PageRank was increasing with subdomains very slowly. While with custom it will increase faster.
  7. In lots of companies I have seen block blog word with custom domain its will removed. So more people can reach at my blog when they need me.
Here is a great link which inspired me a lot for migrating my blog to http://jalpesh.blogspot.com to http://www.dotnetjalps.com.

Note: I have not change my feeds address for personal blog. So RSS feeds will remain same at- http://feeds.feedburner.com/blogspot/DotNetJalps.

On this opportunity once again I would like thanks my reader and my supporters for making me whatever I am. Without you guys it would not have been possible. You are the real hero for me. So please keep reading my blogs and send me suggestions to make better and better.

One another great news is that DZone people send me a certificate for my DZone MVB. So I would like to take this opportunity to  share with you guys.

DZoneCertificate

That’s it. Please comment your views about my blog. Stay tuned for more..Till then Happy Programming.. Namaste!!!

Shout it
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