Text version of the video
http://csharp-video-tutorials.blogspot.com/2012/06/part-33-c-tutorial-difference-between.html
Slides
http://csharp-video-tutorials.blogspot.com/2013/08/part-33-abstract-classes-vs-interfaces.html
All C# Text Articles
http://csharp-video-tutorials.blogspot.co.uk/p/free-c-video-tutorial-for-beginners.html
All C# Slides
http://csharp-video-tutorials.blogspot.com/p/c.html
Complete C# tutorial
https://www.youtube.com/playlist?list=PLAC325451207E3105
All Dot Net and SQL Server Tutorials in English
https://www.youtube.com/user/kudvenkat/playlists?view=1&sort=dd
All Dot Net and SQL Server Tutorials in Arabic
https://www.youtube.com/c/KudvenkatArabic/playlists
In this part of the c sharp tutorial we will learn about the differences between abstract classes and interfaces

cross apply sql server example
sql server outer apply example
sql server join table function with parameter
sql server inner join table valued function
In this video we will discuss cross apply and outer apply in sql server with examples.
We want to retrieve all the matching rows between Department and Employee tables.
This can be very easily achieved using an Inner Join as shown below.
Select D.DepartmentName, E.Name, E.Gender, E.Salary
from Department D
Inner Join Employee E
On D.Id = E.DepartmentId
Now if we want to retrieve all the matching rows between Department and Employee tables + the non-matching rows from the LEFT table (Department)
This can be very easily achieved using a Left Join as shown below.
Select D.DepartmentName, E.Name, E.Gender, E.Salary
from Department D
Left Join Employee E
On D.Id = E.DepartmentId
Now let's assume we do not have access to the Employee table. Instead we have access to the following Table Valued function, that returns all employees belonging to a department by Department Id.
Create function fn_GetEmployeesByDepartmentId(@DepartmentId int)
Returns Table
as
Return
(
Select Id, Name, Gender, Salary, DepartmentId
from Employee where DepartmentId = @DepartmentId
)
Go
The following query returns the employees of the department with Id =1.
Select * from fn_GetEmployeesByDepartmentId(1)
Now if you try to perform an Inner or Left join between Department table and fn_GetEmployeesByDepartmentId() function you will get an error.
Select D.DepartmentName, E.Name, E.Gender, E.Salary
from Department D
Inner Join fn_GetEmployeesByDepartmentId(D.Id) E
On D.Id = E.DepartmentId
If you execute the above query you will get the following error
Msg 4104, Level 16, State 1, Line 3
The multi-part identifier "D.Id" could not be bound.
This is where we use Cross Apply and Outer Apply operators. Cross Apply is semantically equivalent to Inner Join and Outer Apply is semantically equivalent to Left Outer Join.
Just like Inner Join, Cross Apply retrieves only the matching rows from the Department table and fn_GetEmployeesByDepartmentId() table valued function.
Select D.DepartmentName, E.Name, E.Gender, E.Salary
from Department D
Cross Apply fn_GetEmployeesByDepartmentId(D.Id) E
Just like Left Outer Join, Outer Apply retrieves all matching rows from the Department table and fn_GetEmployeesByDepartmentId() table valued function + non-matching rows from the left table (Department)
Select D.DepartmentName, E.Name, E.Gender, E.Salary
from Department D
Outer Apply fn_GetEmployeesByDepartmentId(D.Id) E
How does Cross Apply and Outer Apply work
The APPLY operator introduced in SQL Server 2005, is used to join a table to a table-valued function.
The Table Valued Function on the right hand side of the APPLY operator gets called for each row from the left (also called outer table) table.
Cross Apply returns only matching rows (semantically equivalent to Inner Join)
Outer Apply returns matching + non-matching rows (semantically equivalent to Left Outer Join). The unmatched columns of the table valued function will be set to NULL.
Text version of the video
http://csharp-video-tutorials.blogspot.com/2015/09/cross-apply-and-outer-apply-in-sql.html
Slides
http://csharp-video-tutorials.blogspot.com/2015/09/cross-apply-and-outer-apply-in-sql_8.html
All SQL Server Text Articles
http://csharp-video-tutorials.blogspot.com/p/free-sql-server-video-tutorials-for.html
All SQL Server Slides
http://csharp-video-tutorials.blogspot.com/p/sql-server.html
All Dot Net and SQL Server Tutorials in English
https://www.youtube.com/user/kudvenkat/playlists?view=1&sort=dd
All Dot Net and SQL Server Tutorials in Arabic
https://www.youtube.com/c/KudvenkatArabic/playlists

In this c sharp tutorial we will learn the basics of delegates
Text version of the video
http://csharp-video-tutorials.blogspot.com/2012/06/part-36-c-tutorial-delegates.html
Slides
http://csharp-video-tutorials.blogspot.com/2013/08/part-36-delegates.html
All C# Text Articles
http://csharp-video-tutorials.blogspot.co.uk/p/free-c-video-tutorial-for-beginners.html
All C# Slides
http://csharp-video-tutorials.blogspot.com/p/c.html
Complete C# tutorial
https://www.youtube.com/playlist?list=PLAC325451207E3105
All Dot Net and SQL Server Tutorials in English
https://www.youtube.com/user/kudvenkat/playlists?view=1&sort=dd
All Dot Net and SQL Server Tutorials in Arabic
https://www.youtube.com/c/KudvenkatArabic/playlists

In this video we will learn about
What are indexes
Why do we use indexes
Advantages of indexes
These concepts are applicable to sql server 2000, 2005 and 2008
Text version of the video
http://csharp-video-tutorials.blogspot.com/2012/09/indexes-in-sql-server-part-35.html
Slides
http://csharp-video-tutorials.blogspot.com/2013/08/part-35-indexes.html
All SQL Server Text Articles
http://csharp-video-tutorials.blogspot.com/p/free-sql-server-video-tutorials-for.html
All SQL Server Slides
http://csharp-video-tutorials.blogspot.com/p/sql-server.html
All Dot Net and SQL Server Tutorials in English
https://www.youtube.com/user/kudvenkat/playlists?view=1&sort=dd
All Dot Net and SQL Server Tutorials in Arabic
https://www.youtube.com/c/KudvenkatArabic/playlists

In this part of the c sharp tutorial we will learn about abstract classes
Text version of the video
http://csharp-video-tutorials.blogspot.com/2012/06/part-32-c-tutorial-abstract-classes.html
Slides
http://csharp-video-tutorials.blogspot.com/2013/08/part-32-abstract-classes.html
All C# Text Articles
http://csharp-video-tutorials.blogspot.co.uk/p/free-c-video-tutorial-for-beginners.html
All C# Slides
http://csharp-video-tutorials.blogspot.com/p/c.html
Complete C# tutorial
https://www.youtube.com/playlist?list=PLAC325451207E3105
All Dot Net and SQL Server Tutorials in English
https://www.youtube.com/user/kudvenkat/playlists?view=1&sort=dd
All Dot Net and SQL Server Tutorials in Arabic
https://www.youtube.com/c/KudvenkatArabic/playlists

Text version of the video
http://csharp-video-tutorials.blogspot.com/2013/04/part-6-viewdata-and-viewbag-in-mvc.html
Slides
http://csharp-video-tutorials.blogspot.com/2013/09/part-6-view-data-and-view-bag-in-mvc.html
All ASP .NET MVC Text Articles
http://csharp-video-tutorials.blogspot.com/p/aspnet-mvc-tutorial-for-beginners.html
All ASP .NET MVC Slides
http://csharp-video-tutorials.blogspot.com/p/aspnet-mvc-slides.html
All Dot Net and SQL Server Tutorials in English
https://www.youtube.com/user/kudvenkat/playlists?view=1&sort=dd
All Dot Net and SQL Server Tutorials in Arabic
https://www.youtube.com/c/KudvenkatArabic/playlists
In this video we will discuss
1. What is ViewData
2. What is ViewBag
3. Difference between ViewData and ViewBag
Both ViewData and ViewBag are used to pass data from a controller to a view. ViewData is a dictionary of objects that are stored and retrieved using strings as keys. The syntax of ViewData is very similar to that of ViewState, SessionState and ApplicationState.
// Storing data in ViewData
ViewData["YourData"] = "SomeData";
// Retrieving data from ViewData
string strData = ViewData["YourData"].ToString();
ViewData does not provide compile time error checking. For example, if you mis-spell the key names you wouldn't get any compile time error. You get to know about the error only at runtime.
ViewBag uses the dynamic feature that was introduced in to C# 4. It allows an object to have properties dynamically added to it. Using ViewBag the above code can be rewritten as below.
// Storing data in ViewBag
ViewBag.YourData = "SomeData";
// Retrieving data from ViewBag
string strData = ViewBag.YourData;
Just like ViewData, ViewBag does not provide compile time error checking. For example, if you mis-spell the property name, you wouldn't get any compile time error. You get to know about the error only at runtime.
Internally ViewBag properties are stored as name/value pairs in the ViewData dictionary.
Please Note: To pass data from controller to a view, It's always a good practice to use strongly typed view models instead of using ViewBag & ViewData. Strongly typed view models provide compile time error checking. We will discuss view models in a later video session.

Text version of the video
http://csharp-video-tutorials.blogspot.com/2012/06/part-24-c-tutorial-difference-between.html
Slides
http://csharp-video-tutorials.blogspot.com/2013/08/part-24-method-overriding-vs-method.html
All C# Text Articles
http://csharp-video-tutorials.blogspot.co.uk/p/free-c-video-tutorial-for-beginners.html
All C# Slides
http://csharp-video-tutorials.blogspot.com/p/c.html
All Dot Net and SQL Server Tutorials in English
https://www.youtube.com/user/kudvenkat/playlists?view=1&sort=dd
All Dot Net and SQL Server Tutorials in Arabic
https://www.youtube.com/c/KudvenkatArabic/playlists
In this part of the c sharp tutorial we will learn the difference between method overriding and method hiding

Link for code samples used in the demo
http://csharp-video-tutorials.blogspot.com/2013/08/part-68-what-is-use-of-nonaction.html
Link for csharp, asp.net, ado.net, dotnet basics, mvc and sql server video tutorial playlists
http://www.youtube.com/user/kudvenkat/playlists
In this video, we will discuss the use of NonAction attribute in asp.net mvc
The following questions could be asked in an interview
What is the use of NonAction attribute in MVC?
OR
How do you restrict access to public methods in a controller?
An action method is a public method in a controller that can be invoked using a URL. So, by default, if you have any public method
in a controller then it can be invoked using a URL request. To restrict access to public methods in a controller, NonAction attribute can be used. Let's understand this with an example.
We have 2 public methods in HomeController, Method1() and Method2().
Method1 can be invoked using URL /Home/Method1
Method2 can be invoked using URL /Home/Method2
public class HomeController : Controller
{
public string Method1()
{
return "[h1]Method 1 Invoked[/h1]";
}
public string Method2()
{
return "[h1]Method 2 Invoked[/h1]";
}
}
Let's say Method2() is for doing some internal work, and we don't want it to be invoked using a URL request. To achieve this, decorate Method2() with NonAction attribute.
[NonAction]
public string Method2()
{
return "[h1]Method 2 Invoked[/h1]";
}
Now, if you naviage to URL /Home/Method2, you will get an error - The resource cannot be found.
Another way to restrict access to methods in a controller, is by making them private.
private string Method2()
{
return "[h1]Method 2 Invoked[/h1]";
}
In general, it's a bad design to have a public method in a controller that is not an action method. If you have any such method for performing business calculations, it should be somewhere in the model and not in the controller.
However, if for some reason, if you want to have public methods in a controller and you don't want to treat them as actions, then use NonAction attribute.
Make sure to replace [ with LESSTHAN and ] with GREATERTHAN symbol.

over partition by in sql server 2008
sql server over clause partition
partition by clause in sql server 2008
over partition by clause in sql
In this video we will discuss the power and use of Over clause in SQL Server.
The OVER clause combined with PARTITION BY is used to break up data into partitions.
Syntax : function (...) OVER (PARTITION BY col1, Col2, ...)
The specified function operates for each partition.
For example :
COUNT(Gender) OVER (PARTITION BY Gender) will partition the data by GENDER i.e there will 2 partitions (Male and Female) and then the COUNT() function is applied over each partition.
Any of the following functions can be used. Please note this is not the complete list.
COUNT(), AVG(), SUM(), MIN(), MAX(), ROW_NUMBER(), RANK(), DENSE_RANK() etc.
Example :
SQl Script to create Employees table
Create Table Employees
(
Id int primary key,
Name nvarchar(50),
Gender nvarchar(10),
Salary int
)
Go
Insert Into Employees Values (1, 'Mark', 'Male', 5000)
Insert Into Employees Values (2, 'John', 'Male', 4500)
Insert Into Employees Values (3, 'Pam', 'Female', 5500)
Insert Into Employees Values (4, 'Sara', 'Female', 4000)
Insert Into Employees Values (5, 'Todd', 'Male', 3500)
Insert Into Employees Values (6, 'Mary', 'Female', 5000)
Insert Into Employees Values (7, 'Ben', 'Male', 6500)
Insert Into Employees Values (8, 'Jodi', 'Female', 7000)
Insert Into Employees Values (9, 'Tom', 'Male', 5500)
Insert Into Employees Values (10, 'Ron', 'Male', 5000)
Go
Write a query to retrieve total count of employees by Gender. Also in the result we want Average, Minimum and Maximum salary by Gender.
This can be very easily achieved using a simple GROUP BY query as show below.
SELECT Gender, COUNT(*) AS GenderTotal, AVG(Salary) AS AvgSal,
MIN(Salary) AS MinSal, MAX(Salary) AS MaxSal
FROM Employees
GROUP BY Gender
What if we want non-aggregated values (like employee Name and Salary) in result set along with aggregated values
You cannot include non-aggregated columns in the GROUP BY query.
SELECT Name, Salary, Gender, COUNT(*) AS GenderTotal, AVG(Salary) AS AvgSal,
MIN(Salary) AS MinSal, MAX(Salary) AS MaxSal
FROM Employees
GROUP BY Gender
The above query will result in the following error : Column 'Employees.Name' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause
One way to achieve this is by including the aggregations in a subquery and then JOINING it with the main query as shown in the example below. Look at the amount of T-SQL code we have to write.
SELECT Name, Salary, Employees.Gender, Genders.GenderTotals,
Genders.AvgSal, Genders.MinSal, Genders.MaxSal
FROM Employees
INNER JOIN
(SELECT Gender, COUNT(*) AS GenderTotals,
AVG(Salary) AS AvgSal,
MIN(Salary) AS MinSal, MAX(Salary) AS MaxSal
FROM Employees
GROUP BY Gender) AS Genders
ON Genders.Gender = Employees.Gender
Better way of doing this is by using the OVER clause combined with PARTITION BY
SELECT Name, Salary, Gender,
COUNT(Gender) OVER(PARTITION BY Gender) AS GenderTotals,
AVG(Salary) OVER(PARTITION BY Gender) AS AvgSal,
MIN(Salary) OVER(PARTITION BY Gender) AS MinSal,
MAX(Salary) OVER(PARTITION BY Gender) AS MaxSal
FROM Employees
Text version of the video
http://csharp-video-tutorials.blogspot.com/2015/09/over-clause-in-sql-server.html
Slides
http://csharp-video-tutorials.blogspot.com/2015/09/over-clause-in-sql-server_29.html
All SQL Server Text Articles
http://csharp-video-tutorials.blogspot.com/p/free-sql-server-video-tutorials-for.html
All SQL Server Slides
http://csharp-video-tutorials.blogspot.com/p/sql-server.html
All Dot Net and SQL Server Tutorials in English
https://www.youtube.com/user/kudvenkat/playlists?view=1&sort=dd
All Dot Net and SQL Server Tutorials in Arabic
https://www.youtube.com/c/KudvenkatArabic/playlists

Link for code samples used in the demo
http://csharp-video-tutorials.blogspot.com/2013/11/part-1-introduction-to-wcf.html
Link for all dot net and sql server video tutorial playlists
http://www.youtube.com/user/kudvenkat/playlists
In this video we will discuss
What is WCF
Why should we use WCF
What is WCF?
WCF stands for Windows Communication Foundation and is part of .NET 3.0. WCF is Microsoft platform for building distributed and interoperable applications.
What is a distributed application?
In simple terms a distributed application, is an application where parts of it run on 2 or more computers. Distributed applications are also called as connected systems or applications.
Examples:
A web application running on one machine and a web service that this application is consuming is running on another machine.
An enterprise web application may have the following tiers, and each tier may be running on a different machine
1. Presentation tier
2. Business tier
3. Data Access tier
Why build distributed applications?
There are several reasons for this
1. An enterprise application may need to use the services provided by other enterprises. For example an ecommerce application may be using paypal service for payments.
2. For better scalability. An enterprise web application may have Presentation tier, Business tier, and Data Access tiert, and each tier may be running on a different machine.
What is an interoperable application?
An application that can communicate with any other application that is built on any platform and using any programming language is called as an interoperable application. Web services are interoperable, where as .NET remoting services are not. Web services can communicate with any application built on any platform, where as a .NET remoting service can be consumed only by a .net application.
What technology choices did we have before WCF to build distributed applications?
Enterprise Services
Dot Net Remoting
Web Services
Why should we use WCF?
Let's take this scenario
We have 2 clients and we need to implement a service a for them.
1. The first client is using a Java application to interact with our service, so for interoperability this client wants messages to be in XML format and the protocol to be HTTP.
2. The second client uses .NET, so for better performance this client wants messages formmated in binary over TCP protocol.
Without WCF
1. To satisfy the first client requirement we end up implementing an ASMX web service, and
2. To satisfy the second client requirement we end up implementing a remoting service
These are 2 different technologies, and have complete different programming models. So the developers have to learn different technologies.
So to unify and bring all these technologies under one roof Microsoft has come up with a single programming model that is called as WCF - Windows Communication Foundation.
With WCF,
You implement one service and we can configure as many end points as want to support all the client needs. To support the above 2 client requirements, we would configure 2 end points. In the endpoint configuration we can specify the protocols and message formats that we want to use.
In Part 2, we will discuss implementing
1. A web service to exchange messages in XML format using HTTP protocol for interoperability.
2. A remoting service to exchange messages in binary format using TCP protocol for performance.
Along the way, we will get a feel of how different these technologies are.
In Part 3, we will dicuss implementing a single WCF Service and configuring different end points to support different transport protocols and message formats.

Link for all dot net and sql server video tutorial playlists
http://www.youtube.com/user/kudvenkat/playlists
Link for slides, code samples and text version of the video
http://csharp-video-tutorials.blogspot.com/2014/05/part-3-how-does-recursive-cte-work.html
A lot of you have asked to explain, how a recursive CTE work line by line. If you have not watched Part 2 already, I strongly recommend to watch that video first before proceeding.
In Part 2 of SQL Server Interview questions and answers video series we discussed recursive CTE to retrieve the organization hierarchy.
Let's now discuss how the CTE executes line by line.
Step 1: Execute the anchor part and get result R0
Step 2: Execute the recursive member using R0 as input and generate result R1
Step 3: Execute the recursive member using R1 as input and generate result R2
Step 4: Recursion goes on until the recursive member output becomes NULL
Step 5: Finally apply UNION ALL on all the results to produce the final output

sql server where vs having
sql server group by where having
group by having sql server
In this vide we will discuss the difference between where and having caluses in sql server.
Let us understand the difference with an example.
To calculate total sales by product, we would write a GROUP BY query as shown below
SELECT Product, SUM(SaleAmount) AS TotalSales
FROM Sales
GROUP BY Product
Now if we want to find only those products where the total sales amount is greater than $1000, we will use HAVING clause to filter products
SELECT Product, SUM(SaleAmount) AS TotalSales
FROM Sales
GROUP BY Product
HAVING SUM(SaleAmount) ] 1000
If we use WHERE clause instead of HAVING clause, we will get a syntax error. This is because the WHERE clause doesn’t work with aggregate functions like sum, min, max, avg, etc.
SELECT Product, SUM(SaleAmount) AS TotalSales
FROM Sales
GROUP BY Product
WHERE SUM(SaleAmount) ] 1000
So in short, the difference is WHERE clause cannot be used with aggregates where as HAVING can.
However, there are other differences as well that we need to keep in mind when using WHERE and HAVING clauses. WHERE clause filters rows before aggregate calculations are performed where as HAVING clause filters rows after aggregate calculations are performed. Let us understand this with an example.
Total sales of iPhone and Speakers can be calculated by using either WHERE or HAVING clause
Calculate Total sales of iPhone and Speakers using WHERE clause : In this example the WHERE clause retrieves only iPhone and Speaker products and then performs the sum.
SELECT Product, SUM(SaleAmount) AS TotalSales
FROM Sales
WHERE Product in ('iPhone', 'Speakers')
GROUP BY Product
Calculate Total sales of iPhone and Speakers using HAVING clause : This example retrieves all rows from Sales table, performs the sum and then removes all products except iPhone and Speakers.
SELECT Product, SUM(SaleAmount) AS TotalSales
FROM Sales
GROUP BY Product
HAVING Product in ('iPhone', 'Speakers')
So from a performance standpoint, HAVING is slower than WHERE and should be avoided when possible.
Another difference is WHERE comes before GROUP BY and HAVING comes after GROUP BY.
Difference between WHERE and Having
1. WHERE clause cannot be used with aggregates where as HAVING can. This means WHERE clause is used for filtering individual rows where as HAVING clause is used to filter groups.
2. WHERE comes before GROUP BY. This means WHERE clause filters rows before aggregate calculations are performed. HAVING comes after GROUP BY. This means HAVING clause filters rows after aggregate calculations are performed. So from a performance standpoint, HAVING is slower than WHERE and should be avoided when possible.
3. WHERE and HAVING can be used together in a SELECT query. In this case WHERE clause is applied first to filter individual rows. The rows are then grouped and aggregate calculations are performed, and then the HAVING clause filters the groups.
Text version of the video
http://csharp-video-tutorials.blogspot.com/2015/09/difference-between-where-and-having-in.html
Slides
http://csharp-video-tutorials.blogspot.com/2015/09/difference-between-where-and-having-in_15.html
All SQL Server Text Articles
http://csharp-video-tutorials.blogspot.com/p/free-sql-server-video-tutorials-for.html
All SQL Server Slides
http://csharp-video-tutorials.blogspot.com/p/sql-server.html
Full SQL Server Course
https://www.youtube.com/playlist?list=PL4cyC4G0M1RQ_Rm52cQ4CcOJ_T_HXeMB4
All Dot Net and SQL Server Tutorials in English
https://www.youtube.com/user/kudvenkat/playlists?view=1&sort=dd
All Dot Net and SQL Server Tutorials in Arabic
https://www.youtube.com/c/KudvenkatArabic/playlists

In this video we will learn about
1. Different types of indexes in sql server
2. What are clustered indexes
3. What are NonClustered indexes
4. Difference between clustered and non clustered indexes
Text version of the video
http://csharp-video-tutorials.blogspot.co.uk/2012/09/clustered-and-non-clustered-indexes.html
Slides
http://csharp-video-tutorials.blogspot.com/2013/09/part-36-clustered-nonclustered-indexes.html
All SQL Server Text Articles
http://csharp-video-tutorials.blogspot.com/p/free-sql-server-video-tutorials-for.html
All SQL Server Slides
http://csharp-video-tutorials.blogspot.com/p/sql-server.html
All Dot Net and SQL Server Tutorials in English
https://www.youtube.com/user/kudvenkat/playlists?view=1&sort=dd
All Dot Net and SQL Server Tutorials in Arabic
https://www.youtube.com/c/KudvenkatArabic/playlists

http://csharp-video-tutorials.blogspot.com/2014/09/how-to-become-aspnet-developer.html
In this video we will discuss all that you need to know to become a successful asp.net web application developer
Essential skills : The following are the essential skills that you need to learn in the order specified to become a web developer
1. Dot Net Basics : Learn what is Dot Net all about and how it works. All dot net developers, irrespective of whether you are a web or windows developer, need to know about these concepts.
2. One Programming language (C# or VB.NET) : You must learn at least on of the programming language (C# or VB.NET) to build dynamic data driven web applications. These videos start from the basics and covers all the advanced aspects of c# programming language that an asp.net web developer needs to know.
3. SQL Server : SQL Server is a database that stores the web application data. You need to learn the SQL programming language to store and retrieve data from the database server, which helps us build data driven web application.
4. ASP.NET : This is the framework that .NET provides to build web applications.
5. ADO.NET : Enables an asp.net web application to communicate with the database to store and retrieve data.
6. ASP.NET GridView - This is one of the widely used data control in an asp.net web application that enables to display, insert, update and delete data.
7. Visual Studio - This is the development tool/software that we use to build Dot Net applications.
In addition to the above 7 essential skills, you also need to know the basics of HTML. HTML is very easy to self learn and there are many free resources on the web already.
Nice to have skills : These days a lot of organisations are also looking for the following skills in addtion to the above essential skills. If you want to increase the chances of getting your resume shortlisted for an interview call, then you also need to be familiar (if not proficient) with the following technologies.
1. ASP.NET Web Services : ASP.NET Web Services became a legacy technology with the introduction of WCF. However, there are many organisations that are still using ASP.NET web services, so if you want to increase your chances of an interview call you may want to learn this technology as well. Also, learning asp.net web services, makes it easy to learn WCF.
2. WCF : Helps buils service oriented applications. If you are familiar with this and if you can answer the interview questions you almost have the job.
3. ASP.NET MVC - Gives you a powerful, patterns-based way to build dynamic websites that enables a clean separation of concerns and that gives you full control.
3. Entity Framework : This is an ORM framework that enables .NET developers to work with relational data using domain-specific objects. Another nice to have skill.
4. LINQ - Language-Integrated Query (LINQ) is a set of features introduced in Visual Studio 2008 that extends powerful query capabilities to the language syntax of C# and Visual Basic. The different aspects of LINQ are covered in the following tutorials.
LINQ
LINQ to XML
LINQ to SQL
In addition to the above 4 nice to have skills, you also need to know jQuery. I don't have a video series on this yet, but there are several resources on the web already.
To help you with your interview preparation, I have also started several video series as listed below.
C# Interview Questions & Answers
Dot Net Written Test Questions & Answers
SQL Server Interview Questions & Answers
Slides, code samples and text version of the videos are available on my blog.
http://csharp-video-tutorials.blogspot.com
All these resources are available at no cost. In total there are over 700 videos (150 Hours). This means if you spend 5 hours a day watching these videos in 30 days you have most of the skills required to become a successful asp.net web developer.
If you need a video on a concept that you are struggling with or if you have attended an interview and if you need a question to be answered, please leave it as a comment and I shall record and upload video answering it as soon as I can.
If you need a DVD with all the videos and slides or if you need to download the videos for offline viewing, please visit the following link.
http://pragimtech.com/order.aspx
Finally if you feel these videos could help others like you please share on Facebook, Google+ and any other social media you use.
Enjoy Coding
Venkat

row_number vs rank vs dense_rank in sql server
dense_rank vs rank vs row_number sql server
rank dense_rank row_number in sql server
In this video we will discuss the similarities and difference between RANK, DENSE_RANK and ROW_NUMBER functions in SQL Server.
Similarities between RANK, DENSE_RANK and ROW_NUMBER functions
Returns an increasing integer value starting at 1 based on the ordering of rows imposed by the ORDER BY clause (if there are no ties)
ORDER BY clause is required
PARTITION BY clause is optional
When the data is partitioned, the integer value is reset to 1 when the partition changes
SQL Script to create the Employees table
Create Table Employees
(
Id int primary key,
Name nvarchar(50),
Gender nvarchar(10),
Salary int
)
Go
Insert Into Employees Values (1, 'Mark', 'Male', 6000)
Insert Into Employees Values (2, 'John', 'Male', 8000)
Insert Into Employees Values (3, 'Pam', 'Female', 4000)
Insert Into Employees Values (4, 'Sara', 'Female', 5000)
Insert Into Employees Values (5, 'Todd', 'Male', 3000)
Notice that no two employees in the table have the same salary. So all the 3 functions RANK, DENSE_RANK and ROW_NUMBER produce the same increasing integer value when ordered by Salary column.
SELECT Name, Salary, Gender,
ROW_NUMBER() OVER (ORDER BY Salary DESC) AS RowNumber,
RANK() OVER (ORDER BY Salary DESC) AS [Rank],
DENSE_RANK() OVER (ORDER BY Salary DESC) AS DenseRank
FROM Employees
You will only see the difference when there ties.
Now let's include duplicate values for Salary column.
To do this
First delete existing data from the Employees table
DELETE FROM Employees
Insert new rows with duplicate valuse for Salary column
Insert Into Employees Values (1, 'Mark', 'Male', 8000)
Insert Into Employees Values (2, 'John', 'Male', 8000)
Insert Into Employees Values (3, 'Pam', 'Female', 8000)
Insert Into Employees Values (4, 'Sara', 'Female', 4000)
Insert Into Employees Values (5, 'Todd', 'Male', 3500)
Notice 3 employees have the same salary 8000. When you execute the following query you can clearly see the difference between RANK, DENSE_RANK and ROW_NUMBER functions.
SELECT Name, Salary, Gender,
ROW_NUMBER() OVER (ORDER BY Salary DESC) AS RowNumber,
RANK() OVER (ORDER BY Salary DESC) AS [Rank],
DENSE_RANK() OVER (ORDER BY Salary DESC) AS DenseRank
FROM Employees
Difference between RANK, DENSE_RANK and ROW_NUMBER functions
ROW_NUMBER : Returns an increasing unique number for each row starting at 1, even if there are duplicates.
RANK : Returns an increasing unique number for each row starting at 1. When there are duplicates, same rank is assigned to all the duplicate rows, but the next row after the duplicate rows will have the rank it would have been assigned if there had been no duplicates. So RANK function skips rankings if there are duplicates.
DENSE_RANK : Returns an increasing unique number for each row starting at 1. When there are duplicates, same rank is assigned to all the duplicate rows but the DENSE_RANK function will not skip any ranks. This means the next row after the duplicate rows will have the next rank in the sequence.
Text version of the video
http://csharp-video-tutorials.blogspot.com/2015/10/difference-between-rank-denserank-and.html
Slides
http://csharp-video-tutorials.blogspot.com/2015/10/difference-between-rank-denserank-and_2.html
All SQL Server Text Articles
http://csharp-video-tutorials.blogspot.com/p/free-sql-server-video-tutorials-for.html
All SQL Server Slides
http://csharp-video-tutorials.blogspot.com/p/sql-server.html
All Dot Net and SQL Server Tutorials in English
https://www.youtube.com/user/kudvenkat/playlists?view=1&sort=dd
All Dot Net and SQL Server Tutorials in Arabic
https://www.youtube.com/c/KudvenkatArabic/playlists

In this video we will learn about, database normalization, different normal forms, problems of data redundancy, first normal form, that is how to put a table in 1 NF.
Text version of the video
http://csharp-video-tutorials.blogspot.com/2012/09/database-normalization-part-52.html
Slides
http://csharp-video-tutorials.blogspot.com/2013/09/part-52-normalization.html
All SQL Server Text Articles
http://csharp-video-tutorials.blogspot.com/p/free-sql-server-video-tutorials-for.html
All SQL Server Slides
http://csharp-video-tutorials.blogspot.com/p/sql-server.html
All Dot Net and SQL Server Tutorials in English
https://www.youtube.com/user/kudvenkat/playlists?view=1&sort=dd
All Dot Net and SQL Server Tutorials in Arabic
https://www.youtube.com/c/KudvenkatArabic/playlists

In this video we will discuss about Lead and Lag functions.
Lead and Lag functions
Introduced in SQL Server 2012
Lead function is used to access subsequent row data along with current row data
Lag function is used to access previous row data along with current row data
ORDER BY clause is required
PARTITION BY clause is optional
Syntax
LEAD(Column_Name, Offset, Default_Value) OVER (ORDER BY Col1, Col2, ...)
LAG(Column_Name, Offset, Default_Value) OVER (ORDER BY Col1, Col2, ...)
Offset - Number of rows to lead or lag.
Default_Value - The default value to return if the number of rows to lead or lag goes beyond first row or last row in a table or partition. If default value is not specified NULL is returned.
We will use the following Employees table for the examples in this video
SQL Script to create the Employees table
Create Table Employees
(
Id int primary key,
Name nvarchar(50),
Gender nvarchar(10),
Salary int
)
Go
Insert Into Employees Values (1, 'Mark', 'Male', 1000)
Insert Into Employees Values (2, 'John', 'Male', 2000)
Insert Into Employees Values (3, 'Pam', 'Female', 3000)
Insert Into Employees Values (4, 'Sara', 'Female', 4000)
Insert Into Employees Values (5, 'Todd', 'Male', 5000)
Insert Into Employees Values (6, 'Mary', 'Female', 6000)
Insert Into Employees Values (7, 'Ben', 'Male', 7000)
Insert Into Employees Values (8, 'Jodi', 'Female', 8000)
Insert Into Employees Values (9, 'Tom', 'Male', 9000)
Insert Into Employees Values (10, 'Ron', 'Male', 9500)
Go
Lead and Lag functions example WITHOUT partitions : This example Leads 2 rows and Lags 1 row from the current row.
When you are on the first row, LEAD(Salary, 2, -1) allows you to move forward 2 rows and retrieve the salary from the 3rd row.
When you are on the first row, LAG(Salary, 1, -1) allows us to move backward 1 row. Since there no rows beyond row 1, Lag function in this case returns the default value -1.
When you are on the last row, LEAD(Salary, 2, -1) allows you to move forward 2 rows. Since there no rows beyond the last row 1, Lead function in this case returns the default value -1.
When you are on the last row, LAG(Salary, 1, -1) allows us to move backward 1 row and retrieve the salary from the previous row.
SELECT Name, Gender, Salary,
LEAD(Salary, 2, -1) OVER (ORDER BY Salary) AS Lead_2,
LAG(Salary, 1, -1) OVER (ORDER BY Salary) AS Lag_1
FROM Employees
Lead and Lag functions example WITH partitions : Notice that in this example, Lead and Lag functions return default value if the number of rows to lead or lag goes beyond first row or last row in the partition.
SELECT Name, Gender, Salary,
LEAD(Salary, 2, -1) OVER (PARTITION By Gender ORDER BY Salary) AS Lead_2,
LAG(Salary, 1, -1) OVER (PARTITION By Gender ORDER BY Salary) AS Lag_1
FROM Employees
Text version of the video
http://csharp-video-tutorials.blogspot.com/2015/10/lead-and-lag-functions-in-sql-server.html
Slides
http://csharp-video-tutorials.blogspot.com/2015/10/lead-and-lag-functions-in-sql-server_5.html
All SQL Server Text Articles
http://csharp-video-tutorials.blogspot.com/p/free-sql-server-video-tutorials-for.html
All SQL Server Slides
http://csharp-video-tutorials.blogspot.com/p/sql-server.html
All Dot Net and SQL Server Tutorials in English
https://www.youtube.com/user/kudvenkat/playlists?view=1&sort=dd
All Dot Net and SQL Server Tutorials in Arabic
https://www.youtube.com/c/KudvenkatArabic/playlists

Link for code samples used in the demo
http://csharp-video-tutorials.blogspot.com/2013/09/part-3-why-and-when-should-we-use.html
Link for csharp, asp.net, ado.net, dotnet basics, mvc and sql server video tutorial playlists
http://www.youtube.com/user/kudvenkat/playlists
This question can also be asked in a slightly different way
Give an example of where we could use an abstract class?
Let us understand when to use an abstract class with an example. An organisation has 2 types of employees
1. FullTimeEmployee
2. ContractEmployee
We would create an abstract class, when want to move the common functionality of 2 or more related classes into a base class and when, we don't want that base class to be instantiated.

AngularJS tutorial - What is AngularJS
In this video we will discuss
What is AngularJS
Benefits of AngularJS
A simple AngularJS example
What is AngularJS
AngularJS is a JavaScript framework that helps build applications that run in a web browser.
Who developed AngularJS
Google is the company that developed AngularJS. AngularJS is an open source project, which means it can be be freely used, changed, and shared by anyone.
AngularJS is an excellent framework for building both Single Page Applications (SPA) and Line of Business Applications. Many companies are using Angular today, and there are many public facing web sites that are built with angular.
There is a website, https://www.madewithangular.com, that has the list of web sites that are built using AngularJS. Within this list you can find many popular websites.
What are the benefits of using AngularJS
1. Dependency Injection : Dependency Injection is something AngularJS does quite well. If you are new to Dependency Injection, don't worry, we will discuss it in detail with examples in a later video.
2. Two Way Data-Binding : One of the most useful feature in AngularJS is the Two Way Data-Binding. The Two Way Data-Binding, keeps the model and the view in sync at all times, that is a change in the model updates the view and a change in the view updates the model.
3. Testing : Testing is an area where Angular really shines. Angular is designed with testing in mind right from the start. Angular makes it very easy to test any of it's components through both unit testing and end to end testing. So there's really no excuse for not testing any of your angular application code.
4. Model View Controller : With angular it is very easy to develop applications in a clean MVC way. All you have to do is split your application code into MVC components. The rest, that is managing those components and connecting them together is done by angular.
5. Many more benefits like controlling the behaviour of DOM elements using directives and the flexibility that angular filters provide.
We will discuss directives, filters, Modules, Routes etc with examples in our upcoming videos in this series.
To build angular applications you only need one script file and that is angular.js.
To get the script file visit https://angularjs.org. From here
1. You can download the angular script file
2. CDN link - We discussed the benefits of using CDN in Part 3 of jQuery tutorial.
3. Various resources to learn angular - Here you will find videos, Free courses, Tutorials and Case Studies. You will also find API reference which is extremeley useful.
To get started with angular
1. Add a reference to the angular script
2. Include ng-app attribute
What is ng-app
In angular, ng-app is called a directive. There are many directives in angular. You can find the complete list of directives on https://angularjs.org. The ng prefix in the directive stands for angular. The ng-app directive is a starting point of AngularJS Application. Angular framework will first check for ng-app directive in an HTML page after the entire page is loaded. If ng-app directive is found, angular bootstraps itself and starts to manage the section of the page that has the ng-app directive.
So the obvious next question is, where to place the ng-app directive on the page
It should be placed at the root of the HTML document, that is at the [html] tag level or at the [body] tag level, so that angular can control the entire page.
However, there is nothing stopping you from placing it on any other HTML element with in the page. When you do this only that element and it's children are managed by angular.
Double curly braces are called binding expressions in angular. These
All the following are valid expressions in angular
{{ 1 == 1 }} - Evaluates to true
{{ { name: 'David', age : '30' }.name }} - Returns the name property value
{{ ['Mark', 'David', 'Sara'][2] }} - Returns the 2nd element from the array
Link for all dot net and sql server video tutorial playlists
https://www.youtube.com/user/kudvenkat/playlists?sort=dd&view=1
Link for slides, code samples and text version of the video
http://csharp-video-tutorials.blogspot.com/2015/10/what-is-angularjs.html

Link for code samples used in the demo
http://csharp-video-tutorials.blogspot.com/2013/10/part-10-what-happens-if-finally-block.html
Link for all dot net and sql server video tutorial playlists
http://www.youtube.com/user/kudvenkat/playlists
This question can also be asked in a slightly different way
How to handle exceptions that occur in finally block
The exception propagates up, and should be handled at a higher level. If the exception is not handled at the higher level, the application crashes. The "finally" block execution stops at the point where the exception is thrown.
In the example below, notice that the "finally" block in "Hello()" method throws an exception. Hello() method is being called in the Main() method and we don't have any exception handling mechanism in place in the Main() method. So, the application crashes with the exception.
public class Program
{
public static void Main()
{
Hello();
}
public static void Hello()
{
try
{
// Some code
}
catch
{
// Some code
}
finally
{
Console.WriteLine("This line will be executed");
int result = Convert.ToInt32("TEN");
Console.WriteLine("This line will NOT be executed");
}
}
}
On the other hand, if you include exception handling mechanism(try/catch) in the Main() method, then you will have the opportunity to handle the exception.
public static void Main()
{
try
{
Hello();
}
catch (Exception ex)
{
// Process and log the exception
Console.WriteLine(ex.Message);
}
}
Irrespective of whether there is an exception or not "finally" block is guaranteed to execute.
1. If the "finally" block is being executed after an exception has occurred in the try block,
2. and if that exception is not handled
3. and if the finally block throws an exception
Then the original exception that occurred in the try block is lost.
Here is an example:
public class Program
{
public static void Main()
{
try
{
Hello();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
public static void Hello()
{
try
{
// This exception will be lost
throw new Exception("Exception in TRY block");
}
finally
{
throw new Exception("Exception in FINALLY block");
}
}
}

Text version of the video
http://csharp-video-tutorials.blogspot.com/2017/09/difference-between-angularjs-angular-2.html
Slides
http://csharp-video-tutorials.blogspot.com/2017/09/difference-between-angularjs-angular-2_13.html
Angular 2 Tutorial playlist
https://www.youtube.com/playlist?list=PL6n9fhu94yhWqGD8BuKuX-VTKqlNBj-m6
Angular 2 Text articles and slides
http://csharp-video-tutorials.blogspot.com/2017/06/angular-2-tutorial-for-beginners_12.html
All Dot Net and SQL Server Tutorials in English
https://www.youtube.com/user/kudvenkat/playlists?view=1&sort=dd
All Dot Net and SQL Server Tutorials in Arabic
https://www.youtube.com/c/KudvenkatArabic/playlists
So far Google has released 3 versions of Angular
Version Year
------------ ------
AngularJS 2010
Angular 2 2016
Angular 4 2017
What is the difference between AngularJS and Angular 2
The first version of Angular is called AngularJS and was released in the year 2010. Some people call it Angular 1, but it is officially called AngularJS.
Angular 2 is released in the year 2016. The most important thing to keep in mind is that, Angular 2 is not a simple upgrade from angular 1.
Angular 2 is completely rewritten from the ground up and as a result the way we write applications with AngularJS and Angular 2 is very different.
From a performance standpoint, Angular 2 is 5 times faster compared to AngularJS.
AngularJS was not built for mobile devices, where as Angular 2 on the other hand is designed from the ground up with mobile support in mind.
With Angular 2 we have more language choices. In additon to nativa JavaScript we can use TypeScript, Dart, PureScript, Elm, etc.
Angular 4 is released in 2017. So, What is the difference between Angular 2 and Angular 4
If you have worked with both Angular 1 and Angular 2, then you already know that the API's and patterns that we use to build applications are very different between these 2 versions. From a developer stand point, it is like learning 2 different frameworks. Since Angular 2 is a complete rewrite from Angular 1, moving from Angular 1 to Angular 2 is a total breaking change.
However, changing from Angular 2 to Angular 4 and even future versions of Angular, won’t be like changing from Angular 1. It won’t be a complete rewrite, it will simply be a change in some core libraries. From a developer standpoint, building an application using Angular 2 and Angular 4 is not very different. We still use the same concepts and patterns. Angular 4 is simply, the next version of Angular 2. The underlying concepts are still the same and if you have already learnt Angular 2 then you’re well prepared to switch to Angular 4.
The most important point to keep in mind is, Angular 4 is backwards compatible with Angular 2 for most applications.
What has changed and what is new in Angular 4
Some under the hood changes to reduce the size of the AOT (Ahead-of-Time) compiler generated code. Migrating to Angular 4 may reduce the production bundles by hundreds of kilobytes. As a developer this change will not affect the way we write angular applications in any way.
TypeScript 2.1 and 2.2 compatibility. Angular is updated with a more recent version of TypeScript, for better type checking throughout our application. Up until Angular 4, only TypeScript 1.8 was supported. With Angular 4, we can use typescript 2.1 or 2.2 which means we can use all the new features of TypeScript with Angular 4.
Animation features are pulled out of @angular/core and are moved into their own package. This means that if you don’t use animations, this extra code will not end up in your production bundles. On the other hand, if you do have animations in your application, you may have to change your existing code to pull the animation features from the animations package.
We can now use an if/else style syntax with *ngIf structural directive. In Angular 2, to implement if/else logic, we use 2 *ngIf structural directives. With Angular 4, we can use it's new if/else style syntax with *ngIf structural directive. We will discuss an example of this in our upcoming videos.
What happened to Angular 3. Why did we move straight from Angular 2 to Angular 4. What is the reason for skipping Angular 3.
Except the Router library, all the other Angular core libraries are versioned the same way and are shipped as NPM packages as you can see below. While all the other core angular packages are at Version 2, the router library is already at Version 3.
Due to this misalignment of the router package’s version, the angular team decided to go straight for Angular v4. This way, all the core packages are aligned which will be easier to maintain and help avoid confusion in the future.
Common Questions
Do I have to learn AngularJS 1 before learning Angular 2
Do I have to learn Angular 2 before learning Angular 4

In this video we will learn
1. Grouping rows using GROUP BY
2. Filtering Groups
3. Difference between WHERE and HAVING clause in sql server
Text version of the video
http://csharp-video-tutorials.blogspot.com/2012/08/group-by-part-11.html
Slides
http://csharp-video-tutorials.blogspot.com/2013/08/part-11-group-by.html
All SQL Server Text Articles
http://csharp-video-tutorials.blogspot.com/p/free-sql-server-video-tutorials-for.html
All SQL Server Slides
http://csharp-video-tutorials.blogspot.com/p/sql-server.html
All Dot Net and SQL Server Tutorials in English
https://www.youtube.com/user/kudvenkat/playlists?view=1&sort=dd
All Dot Net and SQL Server Tutorials in Arabic
https://www.youtube.com/c/KudvenkatArabic/playlists

In this part of the c sharp tutorial we will learn about interfaces
Text version of the video
http://csharp-video-tutorials.blogspot.com/2012/06/part-30-c-tutorial-interfaces-in-c.html
Slides
http://csharp-video-tutorials.blogspot.com/2013/08/part-30-introduction-to-interfaces.html
All C# Text Articles
http://csharp-video-tutorials.blogspot.co.uk/p/free-c-video-tutorial-for-beginners.html
All C# Slides
http://csharp-video-tutorials.blogspot.com/p/c.html
Complete C# tutorial
https://www.youtube.com/playlist?list=PLAC325451207E3105
All Dot Net and SQL Server Tutorials in English
https://www.youtube.com/user/kudvenkat/playlists?view=1&sort=dd
All Dot Net and SQL Server Tutorials in Arabic
https://www.youtube.com/c/KudvenkatArabic/playlists

Link for code samples used in the demo
http://csharp-video-tutorials.blogspot.com/2013/08/part-71-childactiononly-attribute-in-mvc.html
Link for csharp, asp.net, ado.net, dotnet basics, mvc and sql server video tutorial playlists
http://www.youtube.com/user/kudvenkat/playlists
In this video, we will discuss childactiononly attribute in asp.net mvc. Let us understand this with an example.
Step 1: Create a blank asp.net mvc 4 application
Step 2: Add HomeController. Copy and paste the following code.
public class HomeController : Controller
{
// Public action method that can be invoked using a URL request
public ActionResult Index()
{
return View();
}
// This method is accessible only by a child request. A runtime
// exception will be thrown if a URL request is made to this method
[ChildActionOnly]
public ActionResult Countries(List[String] countryData)
{
return View(countryData);
}
}
Step 3: Right click on the "Countries()" action method and add "Countries" view. This view will render the given list of strings as an un-ordered list.
@model List[string]
@foreach (string country in Model)
{
[ul]
[li]
[b]
@country
[/b]
[/li]
[/ul]
}
Step 4: Right click on the "Index()" action method and add "Index" view. Copy and paste the following code. Notice that, to invoke childaction, we are using Action() HTML Helper.
[h2]Countries List[/h2]
@Html.Action("Countries", new { countryData = new List[string]() { "US", "UK", "India" } })
Please Note: Child actions can also be invoked using "RenderAction()" HTMl helper as shown below.
@{
Html.RenderAction("Countries", new { countryData = new List[string]() { "US", "UK", "India" } });
}
We discussed the difference between Action() and RenderAction() in Part XX of MVC Tutorial series.
Points to remember about "ChildActionOnly" attribute
1. Any action method that is decorated with [ChildActionOnly] attribute is a child action method.
2. Child action methods will not respond to URL requests. If an attempt is made, a runtime error will be thrown stating - Child action is accessible only by a child request.
3. Child action methods can be invoked by making child request from a view using "Action()" and "RenderAction()" html helpers.
4. An action method doesn't need to have [ChildActionOnly] attribute to be used as a child action, but use this attribute to prevent if you want to prevent the action method from being invoked as a result of a user request.
5. Child actions are typically associated with partial views, although this is not compulsory.
6. Child action methods are different from NonAction methods, in that NonAction methods cannot be invoked using Action() or RenderAction() helpers. We discussed NonAction methods in Part 70 of ASP.NET MVC tutorial series.
7. Using child action methods, it is possible to cache portions of a view. This is the main advantage of child action methods. We will cover this when we discuss [OutputCache] attribute.
Make sure to replace [ with LESSTHAN and ] with GREATERTHAN symbol.

twitter bootstrap tutorial for beginners
twitter bootstrap for beginners
benefits of bootstrap framework
advantages of bootstrap framework
twitter bootstrap benefits
what is responsive web design
what is responsive website
what is responsive design
use of bootstrap
responsive web development
responsive web app
In this video we will discuss
1. What is bootstrap
2. Advantages of using bootstrap
Bootstrap is a free, open-source and is the most popular HTML, CSS, and JavaScript framework developed by twitter for creating responsive web applications.
It includes HTML and CSS based design templates for common user interface components like Buttons, Dropdowns, Typography, Tabs, Forms, Tables, Navigations, Alerts, Modals, Accordion, Carousel etc. along with optional JavaScript extensions.
Bootstrap framework is based on open standards - HTML, CSS and JavaScript. This means bootstrap can be used with any server side technology and any platform. You can use it with any web application built with any server side technology like ASP.NET, JAVA, PHP etc.
What are the advantages of using bootstrap
Supports responsive design : One of the greatest advantages of using bootstrap is that it helps us create responsive web applications faster and easier. So the obvious question that comes to our mind is, what is a responsive web application? A responsive web application automatically adapts to different screen sizes (i.e desktop computers, laptops, tablets. mobile phones etc). A responsive application provides optimal viewing and interaction experience i.e easy reading and navigation with a minimum of resizing, panning, and scrolling across a wide range of devices. So you don't have to worry about your application not being compatible with multiple devices.
The images at the following links shows how a responsive and non-responsive application looks like on a mobile device.
http://www.webnersolutions.com/wp-content/uploads/2015/08/responsive-vs-non-responsive-web-design1.jpg
At the following link is a live responsive application example. Notice as we resize the browser, the content automatically adpats to the screen size.
http://bootstrapdocs.com/v3.0.3/docs/examples/jumbotron/
Saves lot of development time : One of the biggest advantages of using Bootstrap is that it saves lot of development time. Instead of writing code from the scratch, bootstrap offers ready made blocks of code that you can use and customize to suit your application requirements. There are also many websites out there that offer free and paid Bootstrap themes that saves even more development time.
Consistency : Bootstrap was developed by Twitter to encourage consistency across thier internal tools by giving their developers a centralised development code. Since all the developers are working using a centralised code, the end result is consistent regardless of who’s working on the project and which web browser is being used.
Customizable : If you are using only a few features of bootstrap, you can customize to download only those features using the following bootstrap customize page.
http://getbootstrap.com/customize/
Support : As Bootstrap is the most popular framework, it has a very large community base and excellent documentation. Bootstrap's excellent documentation, examples and demos helps a developer learn bootstrap quickly even if you are new to it. If you ever run into an issue you will usually get help quickly and easily from the vast online community and web forums.
In our next video we will discuss, downloading, setting up and understanding different bootstrap components. Please stay tuned.
Link for all dot net and sql server video tutorial playlists
https://www.youtube.com/user/kudvenkat/playlists?sort=dd&view=1
Link for slides, code samples and text version of the video
http://csharp-video-tutorials.blogspot.com/2016/05/what-is-bootstrap.html

Link for code samples used in the demo
http://csharp-video-tutorials.blogspot.com/2014/02/part-26-what-is-windows-service_8.html
Link for all dot net and sql server video tutorial playlists
http://www.youtube.com/user/kudvenkat/playlists
In this video, we will discuss
1. What is a windows service and how do they differe from regular applications and programs
2. How to view all the services installed on a windows machine
3. What is the use of windows services
4. When would an asp.net developer use a windows service
What is a windows service and how do they differ from regular applications and programs
A windows service is similar to any other program or application running on a windows machine. The following are the differences between a windows service and a regular application
1. Windows service runs in the background
2. They can be configured to start automatically when the system starts
3. They don't have user interface.
How to view all the services installed on a windows machine
1. Open run windows by pressing Windows + R key
2. Type services.msc and press enter
3. The services window should display all the services installed on your computer
What is the use of windows services
Windows services provide core operating system features such as
Event Logging - Windows Event Log Service
Providing Security - Windows Firewall Service
Error reporting - Windows Error Reporting Service
When would an asp.net developer use a windows service
In general, we should create a Windows Service to run code in the background all the time, without any sort of user interaction. An asp.net developer can use a windows service to host a wcf service. We can then configure the windows service to start automatically when the computer starts. This makes our WCF service always available for clients to consume, even if no-one is logged on, on that computer.
In our next video, we will discuss, creating a windows service to host a WCF service

In this video we will learn about pivot operator. Pivot is a sql server operator that can be used to turn unique values from one column, into multiple columns in the output, there by effectively rotating a table.
Text version of the video
http://csharp-video-tutorials.blogspot.com/2012/10/pivot-operator-in-sql-server-part-54.html
Slides
http://csharp-video-tutorials.blogspot.com/2013/09/part-54-pivot-in-sql-server-2008.html
All SQL Server Text Articles
http://csharp-video-tutorials.blogspot.com/p/free-sql-server-video-tutorials-for.html
All SQL Server Slides
http://csharp-video-tutorials.blogspot.com/p/sql-server.html
All Dot Net and SQL Server Tutorials in English
https://www.youtube.com/user/kudvenkat/playlists?view=1&sort=dd
All Dot Net and SQL Server Tutorials in Arabic
https://www.youtube.com/c/KudvenkatArabic/playlists

In this video we will learn about the
1. Purpose of UNION and UNION ALL
2. Difference between UNION and UNION ALL
3. Difference between JOIN and UNION
Text version of the video
http://csharp-video-tutorials.blogspot.com/2012/08/union-and-union-all-in-sql-server-part.html
Slides
http://csharp-video-tutorials.blogspot.com/2013/08/part-17-union-and-union-all.html
All SQL Server Text Articles
http://csharp-video-tutorials.blogspot.com/p/free-sql-server-video-tutorials-for.html
All SQL Server Slides
http://csharp-video-tutorials.blogspot.com/p/sql-server.html
All Dot Net and SQL Server Tutorials in English
https://www.youtube.com/user/kudvenkat/playlists?view=1&sort=dd
All Dot Net and SQL Server Tutorials in Arabic
https://www.youtube.com/c/KudvenkatArabic/playlists

In this video we will learn about
1. Self Join - Joining a table with itself
2. Self Join is not a different type of join. It can be classified as Inner Self Join, Outer Self Join (Left, Right and Full), or Cross Self Join.
Text version of the video
http://csharp-video-tutorials.blogspot.com/2012/08/self-join-in-sql-server-part-14.html
Slides
http://csharp-video-tutorials.blogspot.com/2013/08/part-14-self-join.html
All SQL Server Text Articles
http://csharp-video-tutorials.blogspot.com/p/free-sql-server-video-tutorials-for.html
All SQL Server Slides
http://csharp-video-tutorials.blogspot.com/p/sql-server.html
All Dot Net and SQL Server Tutorials in English
https://www.youtube.com/user/kudvenkat/playlists?view=1&sort=dd
All Dot Net and SQL Server Tutorials in Arabic
https://www.youtube.com/c/KudvenkatArabic/playlists

rank and dense_rank example
difference between rank and dense_rank with example
rank vs dense_rank in sql server 2008
sql server difference between rank and dense_rank
In this video we will discuss Rank and Dense_Rank functions in SQL Server
Rank and Dense_Rank functions
Introduced in SQL Server 2005
Returns a rank starting at 1 based on the ordering of rows imposed by the ORDER BY clause
ORDER BY clause is required
PARTITION BY clause is optional
When the data is partitioned, rank is reset to 1 when the partition changes
Difference between Rank and Dense_Rank functions
Rank function skips ranking(s) if there is a tie where as Dense_Rank will not.
For example : If you have 2 rows at rank 1 and you have 5 rows in total.
RANK() returns - 1, 1, 3, 4, 5
DENSE_RANK returns - 1, 1, 2, 3, 4
Syntax :
RANK() OVER (ORDER BY Col1, Col2, ...)
DENSE_RANK() OVER (ORDER BY Col1, Col2, ...)
RANK() and DENSE_RANK() functions without PARTITION BY clause : In this example, data is not partitioned, so RANK() function provides a consecutive numbering except when there is a tie. Rank 2 is skipped as there are 2 rows at rank 1. The third row gets rank 3.
DENSE_RANK() on the other hand will not skip ranks if there is a tie. The first 2 rows get rank 1. Third row gets rank 2.
SELECT Name, Salary, Gender,
RANK() OVER (ORDER BY Salary DESC) AS [Rank],
DENSE_RANK() OVER (ORDER BY Salary DESC) AS DenseRank
FROM Employees
RANK() and DENSE_RANK() functions with PARTITION BY clause : Notice when the partition changes from Female to Male Rank is reset to 1
SELECT Name, Salary, Gender,
RANK() OVER (PARTITION BY Gender ORDER BY Salary DESC) AS [Rank],
DENSE_RANK() OVER (PARTITION BY Gender ORDER BY Salary DESC) AS DenseRank
FROM Employees
Use case for RANK and DENSE_RANK functions : Both these functions can be used to find Nth highest salary. However, which function to use depends on what you want to do when there is a tie. Let me explain with an example.
If there are 2 employees with the FIRST highest salary, there are 2 different business cases
1. If your business case is, not to produce any result for the SECOND highest salary, then use RANK function
2. If your business case is to return the next Salary after the tied rows as the SECOND highest Salary, then use DENSE_RANK function
Since we have 2 Employees with the FIRST highest salary. Rank() function will not return any rows for the SECOND highest Salary.
WITH Result AS
(
SELECT Salary,
RANK() OVER (ORDER BY Salary DESC) AS Salary_Rank
FROM Employees
)
SELECT TOP 1 Salary FROM Result WHERE Salary_Rank = 2
Though we have 2 Employees with the FIRST highest salary. Dense_Rank() function returns, the next Salary after the tied rows as the SECOND highest Salary
WITH Result AS
(
SELECT Salary,
DENSE_RANK() OVER (ORDER BY Salary DESC) AS Salary_Rank
FROM Employees
)
SELECT TOP 1 Salary FROM Result WHERE Salary_Rank = 2
You can also use RANK and DENSE_RANK functions to find the Nth highest Salary among Male or Female employee groups. The following query finds the 3rd highest salary amount paid among the Female employees group
WITH Result AS
(
SELECT Salary, Gender,
DENSE_RANK() OVER (PARTITION BY Gender ORDER BY Salary DESC) AS Salary_Rank
FROM Employees
)
SELECT TOP 1 Salary FROM Result
WHERE Salary_Rank = 3 AND Gender = 'Female'
Text version of the video
http://csharp-video-tutorials.blogspot.com/2015/10/rank-and-denserank-in-sql-server.html
Slides
http://csharp-video-tutorials.blogspot.com/2015/10/rank-and-denserank-in-sql-server_1.html
All SQL Server Text Articles
http://csharp-video-tutorials.blogspot.com/p/free-sql-server-video-tutorials-for.html
All SQL Server Slides
http://csharp-video-tutorials.blogspot.com/p/sql-server.html
All Dot Net and SQL Server Tutorials in English
https://www.youtube.com/user/kudvenkat/playlists?view=1&sort=dd
All Dot Net and SQL Server Tutorials in Arabic
https://www.youtube.com/c/KudvenkatArabic/playlists

Link for code samples used in the demo
http://csharp-video-tutorials.blogspot.com/2013/08/part-72-handleerror-attribute-in-mvc.html
Link for csharp, asp.net, ado.net, dotnet basics, mvc and sql server video tutorial playlists
http://www.youtube.com/user/kudvenkat/playlists
In this video, we will discuss HandleError attribute in asp.net mvc. HandleErrorAttribute is used to display friendly error pages to end user when there is an unhandled exception. Let us understand this with an example.
Step 1: Create a blank asp.net mvc 4 application.
Step 2: Add a HomeController. Copy and paste the following code.
public ActionResult Index()
{
throw new Exception("Something went wrong");
}
Notice that, the Index() action method throws an exception. As this exception is not handled, when you run the application, you will get the default "yellow screen of death" which does not make sense to the end user.
Now, let us understand replacing this yellow screen of death, with a friendly error page.
Step 3: Enable custom errors in web.config file, that is present in the root directory of your mvc application. "customErrors" element must be nested under "[system.web]"
[customErrors mode="On"]
[/customErrors]
Step 4: Add "Shared" folder under "Views" folder. Add Error.cshtml view inside this folder. Paste the following HTML in Error.cdhtml view.
[h2]An unknown problem has occured, please contact Admin[/h2]
Run the application, and notice that, you are redirected to the friendly "Error" view, instead of the generic "Yellow screen of death".
We did not apply HandleError attribute anywhere. So how did all this work?
HandleErrorAttribute is added to the GlobalFilters collection in global.asax. When a filter is added to the GlobalFilters collection, then it is applicable for all controllers and their action methods in the entire application.
Right click on "RegisterGlobalFilters()" method in Global.asax, and select "Go To Definition" and you can find the code that adds "HandleErrorAttribute" to GlobalFilterCollection.
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new HandleErrorAttribute());
}
Is the friendly error page displayed for HTTP status code 404?
No, but there is a way to display the friendly error page.
In the HomeController, we do not have List() action method. So, if a user navigates to /Home/List, we get an error - The resource cannot be found. HTTP 404.
To display a friendly error page in this case
Step 1: Add "ErrorController" to controllers folder. Copy and paste the following code.
public class ErrorController : Controller
{
public ActionResult NotFound()
{
return View();
}
}
Step 2: Right click on "Shared" folder and add "NotFound.cshtml" view. Copy and paste the following code.
[h2]Please check the URL. The page you are looking for cannot be found[/h2]
Step 3: Change "customErrors" element in web.config as shown below.
[customErrors mode="On"]
[error statusCode="404" redirect="~/Error/NotFound"/]
[/customErrors]
Make sure to replace [ with LESSTHAN and ] with GREATERTHAN symbol.

Link for code samples used in the demo
http://csharp-video-tutorials.blogspot.com/2013/12/part-15-exception-handling-in-wcf_5.html
Link for all dot net and sql server video tutorial playlists
http://www.youtube.com/user/kudvenkat/playlists
When an exception occurs in a WCF service, the service serializes the exception into a SOAP fault, and then sends the SOAP fault to the client.
By default unhandled exception details are not included in SOAP faults that are propagated to client applications for security reasons. Instead a generic SOAP fault is returned to the client.
For debugging purpose, if you want to include exception details in SOAP faults, enable IncludeExceptionDetailInFaults setting. This can be done in 2 ways as shown below.
1. In the config file using service behavior configuration
[behaviors]
[serviceBehaviors]
[behavior name="inculdeExceptionDetails"]
[serviceDebug includeExceptionDetailInFaults="true"/]
[/behavior]
[/serviceBehaviors]
[/behaviors]
2. In code using ServiceBehavior attribute
[ServiceBehavior(IncludeExceptionDetailInFaults=true)]
public class CalculatorService : ICalculatorService
{
public int Divide(int Numerator, int Denominator)
{
return Numerator / Denominator;
}
}
Frequently asked WCF interview questions
What happens when an exception occurs in a WCF service?
OR
What is a SOAP fault?
OR
How are WCF service exceptions reported to client applications?

Link for all dot net and sql server video tutorial playlists
http://www.youtube.com/user/kudvenkat/playlists
Link for slides, code samples and text version of the video
http://csharp-video-tutorials.blogspot.com/2014/05/part-1-how-to-find-nth-highest-salary_17.html
This is a very common SQL Server Interview Question. There are several ways of finding the nth highest salary.
By the end of this video, we will be able to answer all the following questions as well.
How to find nth highest salary in SQL Server using a Sub-Query
How to find nth highest salary in SQL Server using a CTE
How to find the 2nd, 3rd or 15th highest salary
Let's use the following Employees table for this demo
Use the following script to create Employees table
Create table Employees
(
ID int primary key identity,
FirstName nvarchar(50),
LastName nvarchar(50),
Gender nvarchar(50),
Salary int
)
GO
Insert into Employees values ('Ben', 'Hoskins', 'Male', 70000)
Insert into Employees values ('Mark', 'Hastings', 'Male', 60000)
Insert into Employees values ('Steve', 'Pound', 'Male', 45000)
Insert into Employees values ('Ben', 'Hoskins', 'Male', 70000)
Insert into Employees values ('Philip', 'Hastings', 'Male', 45000)
Insert into Employees values ('Mary', 'Lambeth', 'Female', 30000)
Insert into Employees values ('Valarie', 'Vikings', 'Female', 35000)
Insert into Employees values ('John', 'Stanmore', 'Male', 80000)
GO
To find the highest salary it is straight forward. We can simply use the Max() function as shown below.
Select Max(Salary) from Employees
To get the second highest salary use a sub query along with Max() function as shown below.
Select Max(Salary) from Employees where Salary [ (Select Max(Salary) from Employees)
To find nth highest salary using Sub-Query
SELECT TOP 1 SALARY
FROM (
SELECT DISTINCT TOP N SALARY
FROM EMPLOYEES
ORDER BY SALARY DESC
) RESULT
ORDER BY SALARY
To find nth highest salary using CTE
WITH RESULT AS
(
SELECT SALARY,
DENSE_RANK() OVER (ORDER BY SALARY DESC) AS DENSERANK
FROM EMPLOYEES
)
SELECT TOP 1 SALARY
FROM RESULT
WHERE DENSERANK = N
To find 2nd highest salary we can use any of the above queries. Simple replace N with 2.
Similarly, to find 3rd highest salary, simple replace N with 3.
Please Note: On many of the websites, you may have seen that, the following query can be used to get the nth highest salary. The below query will only work if there are no duplicates.
WITH RESULT AS
(
SELECT SALARY,
ROW_NUMBER() OVER (ORDER BY SALARY DESC) AS ROWNUMBER
FROM EMPLOYEES
)
SELECT SALARY
FROM RESULT
WHERE ROWNUMBER = 3

In this video we will learn about, creating indexed views. A unique clustered index, is the first index that should be created on a view. Indexed views are also called as materialized views
Text version of the video
http://csharp-video-tutorials.blogspot.com/2012/09/indexed-views-in-sql-server-part-41.html
Slides
http://csharp-video-tutorials.blogspot.com/2013/09/part-41-indexed-views.html
All SQL Server Text Articles
http://csharp-video-tutorials.blogspot.com/p/free-sql-server-video-tutorials-for.html
All SQL Server Slides
http://csharp-video-tutorials.blogspot.com/p/sql-server.html
All Dot Net and SQL Server Tutorials in English
https://www.youtube.com/user/kudvenkat/playlists?view=1&sort=dd
All Dot Net and SQL Server Tutorials in Arabic
https://www.youtube.com/c/KudvenkatArabic/playlists

In this video we will learn
1. Retrieve the last generated identity column value
2. Difference between SCOPE_IDENTITY(), @@Identity and IDENT_CURRENT('TableName')
Text version of the video
http://csharp-video-tutorials.blogspot.com/2012/08/how-to-get-last-generated-identity.html
Slides
http://csharp-video-tutorials.blogspot.com/2013/08/part-8-retrieving-identity-column-values.html
All SQL Server Text Articles
http://csharp-video-tutorials.blogspot.com/p/free-sql-server-video-tutorials-for.html
All SQL Server Slides
http://csharp-video-tutorials.blogspot.com/p/sql-server.html
All Dot Net and SQL Server Tutorials in English
https://www.youtube.com/user/kudvenkat/playlists?view=1&sort=dd
All Dot Net and SQL Server Tutorials in Arabic
https://www.youtube.com/c/KudvenkatArabic/playlists

Text version of the video
http://csharp-video-tutorials.blogspot.com/2017/08/angular-component-lifecycle-hooks.html
Slides
http://csharp-video-tutorials.blogspot.com/2017/08/angular-component-lifecycle-hooks_1.html
Angular 2 Tutorial playlist
https://www.youtube.com/playlist?list=PL6n9fhu94yhWqGD8BuKuX-VTKqlNBj-m6
Angular 2 Text articles and slides
http://csharp-video-tutorials.blogspot.com/2017/06/angular-2-tutorial-for-beginners_12.html
All Dot Net and SQL Server Tutorials in English
https://www.youtube.com/user/kudvenkat/playlists?view=1&sort=dd
All Dot Net and SQL Server Tutorials in Arabic
https://www.youtube.com/c/KudvenkatArabic/playlists
In this video we will discuss Angular component lifecycle hooks.
A component has a lifecycle managed by Angular. Angular
1. Creates the component
2. Renders the component
3. Creates and renders the component children
4. Checks when the component data-bound properties change, and
5. Destroys the component before removing it from the DOM
To tap into and react when these life cycle events occur, angular offers several lifecycle hooks
The 3 most commonly used hooks are
ngOnChanges - Executes, every time the value of an input property changes. The hook method receives a SimpleChanges object containing current and previous property values. This is called before ngOnInit.
ngOnInit - Executes after the constructor and after ngOnChange hook for the first time. It is most commonly used for component initialisation and retrieving data from a database.
ngOnDestroy - Executes just before angular destroys the component and generally used for performing cleanup.
There are 3 simple steps to use the Life Cycle Hooks
Step 1 : Import the Life Cycle Hook interface. For example, to use ngOnInit() life cycle hook, import OnInit interface.
import { OnInit } from '@angular/core';
Step 2 : Make the component class implement the Life Cycle Hook interface, using the implements keyword as shown below. This step is optional, but good to have so you will get editor support and flags errors at compile time if you incorrectly implement the interface method or make any typographical errors.
export class SimpleComponent implements OnInit { }
Step 3 : Write the implementation code for the life cycle interface method. Each interface has a single hook method whose name is the interface name prefixed with ng.
ngOnInit() {
console.log('OnInit Life Cycle Hook');
}
Let's understand ngOnChanges life cycle hook with a simple example. Here is what we want to do. As soon as the user starts typing into the text box, we want to capture the current and previous value and log it to the browser console. We can very easily achieve this by using the ngOnChanges life cycle hook.
ngOnChanges, is called every time the value of an input property of a component changes. So first let's create a SimpleComponent with an input property as shown below. We will continue with the example we worked with in our previous video. Add a new folder in the App folder and name it Others. Add a new TypeScript file to this folder and name it - simple.component.ts. Copy and paste the following code which is commented and self explanatory.
// Step 1 : Import OnChanges and SimpleChanges
import { Component, Input, OnChanges, SimpleChanges } from '@angular/core';
// The selector "simple" will be used as the directive
// where we want to use this component. Notice we are
// also using the simpleInput property with interpolation
// to display the value it receives from the parent
// component
@Component({
selector: 'simple',
template: `You entered : {{simpleInput}}`
})
// Step 2 : Implement OnChanges Life Cycle Hook interface
export class SimpleComponent implements OnChanges {
// Input property. As and when this property changes
// ngOnChanges life cycle hook method is called
@Input() simpleInput: string;
// Step 3 : Implementation for the hook method
// This code logs the current and previous value
// to the console.
ngOnChanges(changes: SimpleChanges) {
for (let propertyName in changes) {
let change = changes[propertyName];
let current = JSON.stringify(change.currentValue);
let previous = JSON.stringify(change.previousValue);
console.log(propertyName + ': currentValue = '
+ current + ', previousValue = ' + previous);
// The above line can be rewritten using
// placeholder syntax as shown below
// console.log(`${propertyName}: currentValue
// = ${current }, previousValue = ${previous }`);
}
}
}

In this video we will learn about
1. What is a view
2. Creating example views
3. Advantages of using views
Text version of the video
http://csharp-video-tutorials.blogspot.com/2012/09/views-in-sql-server-part-39.html
Slides
http://csharp-video-tutorials.blogspot.com/2013/09/part-39-views-in-sql-server.html
All SQL Server Text Articles
http://csharp-video-tutorials.blogspot.com/p/free-sql-server-video-tutorials-for.html
All SQL Server Slides
http://csharp-video-tutorials.blogspot.com/p/sql-server.html
All Dot Net and SQL Server Tutorials in English
https://www.youtube.com/user/kudvenkat/playlists?view=1&sort=dd
All Dot Net and SQL Server Tutorials in Arabic
https://www.youtube.com/c/KudvenkatArabic/playlists

In this video we will discuss async and await keywords and their use with an example.
Text version of the video
http://csharp-video-tutorials.blogspot.com/2016/10/async-and-await-in-c-example.html
Slides
http://csharp-video-tutorials.blogspot.com/2016/10/async-and-await-in-c-example_31.html
All C# Text Articles
http://csharp-video-tutorials.blogspot.com/p/free-c-video-tutorial-for-beginners.html
All C# Slides
http://csharp-video-tutorials.blogspot.com/p/c.html
All C# Videos
https://www.youtube.com/playlist?list=PLAC325451207E3105
All Dot Net and SQL Server Tutorials in English
https://www.youtube.com/user/kudvenkat/playlists?view=1&sort=dd
All Dot Net and SQL Server Tutorials in Arabic
https://www.youtube.com/c/KudvenkatArabic/playlists

difference between union and union all
difference between intersect and union
difference between intersect and except in sql server
union vs union all sql server
union vs intersect sql server
intersect vs except
In this video we will discuss the difference between union intersect and except in sql server with examples.
UNION operator returns all the unique rows from both the left and the right query. UNION ALL included the duplicates as well.
INTERSECT operator retrieves the common unique rows from both the left and the right query.
EXCEPT operator returns unique rows from the left query that aren’t in the right query’s results.
UNION operator returns all the unique rows from both the queries. Notice the duplicates are removed.
Select Id, Name, Gender from TableA
UNION
Select Id, Name, Gender from TableB
UNION ALL operator returns all the rows from both the queries, including the duplicates.
Select Id, Name, Gender from TableA
UNION ALL
Select Id, Name, Gender from TableB
INTERSECT operator retrieves the common unique rows from both the left and the right query. Notice the duplicates are removed.
Select Id, Name, Gender from TableA
INTERSECT
Select Id, Name, Gender from TableB
EXCEPT operator returns unique rows from the left query that aren’t in the right query’s results.
Select Id, Name, Gender from TableA
EXCEPT
Select Id, Name, Gender from TableB
If you wnat the rows that are present in Table B but not in Table A, reverse the queries.
Select Id, Name, Gender from TableB
EXCEPT
Select Id, Name, Gender from TableA
For all these 3 operators to work the following 2 conditions must be met
The number and the order of the columns must be same in both the queries
The data types must be same or at least compatible
For example, if the number of columns are different, you will get the following error
Msg 205, Level 16, State 1, Line 1
All queries combined using a UNION, INTERSECT or EXCEPT operator must have an equal number of expressions in their target lists.
Text version of the video
http://csharp-video-tutorials.blogspot.com/2015/09/difference-between-union-intersect-and.html
Slides
http://csharp-video-tutorials.blogspot.com/2015/09/difference-between-union-intersect-and_7.html
All SQL Server Text Articles
http://csharp-video-tutorials.blogspot.com/p/free-sql-server-video-tutorials-for.html
All SQL Server Slides
http://csharp-video-tutorials.blogspot.com/p/sql-server.html
All Dot Net and SQL Server Tutorials in English
https://www.youtube.com/user/kudvenkat/playlists?view=1&sort=dd
All Dot Net and SQL Server Tutorials in Arabic
https://www.youtube.com/c/KudvenkatArabic/playlists

In this video we will discuss deploying angular application to IIS.
Here are the steps
Step 1 : Build your angular application.
If you want to deploy a development build do a development build using the following Angular CLI command. The base-href option on the build command sets the base-href element in index.html to "/ePortal/" instaed of "/". In the IIS server, we will create an application with name "ePortal" in just a bit.
ng build --base-href /ePortal/
If you want to deploy a production build do a production build using the following Angular CLI command.
ng build --prod --base-href /ePortal/
In our case let's deploy a production build. After the build is complete, you will notice a folder with name "dist" in your Angular project folder. This folder contains all the build files. These build files need to be copied to a folder on the server where we have IIS installed.
Step 2 : Create a folder on the server where you have IIS installed. You can name the folder anything you want. I am going to name the folder "ProductionBuild" and I am creating it in C:\ drive.
Step 3 : Now copy all the contents of the "dist" folder into "ProductionBuild" folder
Step 4 : Open IIS. There are several ways to do this. One way is to type "inetmgr" in the "Run" window and click "OK"
Step 5 : Create an application in IIS. Name it "ePortal". This name has to match the value we have specified for the --base-href option in Step 1.
a) Exapand the root IIS node
b) Expand Sites
c) Right click on "Default Web Site" and select "Add Application" from the context menu
d) In the "Alias" textbox, type "ePortal"
e) Set the "Physical Path" to folder that contains the build files. In our case it is "ProductionBuild" folder in C:\ drive
At this point, if you launch the browser and navigate to http://localhost/ePortal/home, you will see the "home works" message as expected. When you click on the "Employees" tab it also works as expected.
However, when you "Refresh" the page by pressing F5, you will see HTTP 404 error
Step 6 : To fix this Page Refresh issue in Angular, include the following URL rewrite rule in you web.config file. This web.config file should be in copied the "ProductionBuild" folder where we have the rest of the build files. Please replace [ with LESS_THAN symbol and ] with GREATER_THAN symbol.
[?xml version="1.0" encoding="utf-8"?]
[configuration]
[system.webServer]
[rewrite]
[rules]
[rule name="AngularJS Routes" stopProcessing="true"]
[match url=".*" /]
[conditions logicalGrouping="MatchAll"]
[add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" /]
[add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" /]
[add input="{REQUEST_URI}" pattern="^/(api)" negate="true" /]
[/conditions]
[action type="Rewrite" url="/ePortal" /]
[/rule]
[/rules]
[/rewrite]
[/system.webServer]
[/configuration]
Please note : You may also point the IIS application directly to the "dist" folder in RoutingDemo project folder. The downside of this is every time you rebuild your application, the "dist" folder is deleted and recreated. This means you will loose the web.config file and you have to create it again.
Text version of the video
http://csharp-video-tutorials.blogspot.com/2017/11/deploy-angular-app-to-iis.html
Slides
http://csharp-video-tutorials.blogspot.com/2017/11/deploy-angular-app-to-iis-slides.html
Angular CLI Tutorial
https://www.youtube.com/watch?v=rJ9o4TyhSuo&list=PL6n9fhu94yhWUcq5Pc16uf8YKXoZ87Vh_
Angular CLI Text articles & Slides
http://csharp-video-tutorials.blogspot.com/2017/10/angular-cli-tutorial-for-beginners.html
All Dot Net and SQL Server Tutorials in English
https://www.youtube.com/user/kudvenkat/playlists?view=1&sort=dd
All Dot Net and SQL Server Tutorials in Arabic
https://www.youtube.com/c/KudvenkatArabic/playlists

In this video we will learn, how to use coalesce() function in sql server, with an example
Text version of the video
http://csharp-video-tutorials.blogspot.com/2012/08/coalesce-function-in-sql-server-part-16.html
Slides
http://csharp-video-tutorials.blogspot.com/2013/08/part-16-coalesce-function-in-sql-server.html
All SQL Server Text Articles
http://csharp-video-tutorials.blogspot.com/p/free-sql-server-video-tutorials-for.html
All SQL Server Slides
http://csharp-video-tutorials.blogspot.com/p/sql-server.html
All Dot Net and SQL Server Tutorials in English
https://www.youtube.com/user/kudvenkat/playlists?view=1&sort=dd
All Dot Net and SQL Server Tutorials in Arabic
https://www.youtube.com/c/KudvenkatArabic/playlists

Text version of the video
http://csharp-video-tutorials.blogspot.com/2013/04/installing-aspnet-mvc-part-1.html
Slides
http://csharp-video-tutorials.blogspot.com/2013/09/part-1-installing-aspnet-mvc.html
All ASP .NET MVC Text Articles
http://csharp-video-tutorials.blogspot.com/p/aspnet-mvc-tutorial-for-beginners.html
All ASP .NET MVC Slides
http://csharp-video-tutorials.blogspot.com/p/aspnet-mvc-slides.html
ASP.NET MVC Playlist
https://www.youtube.com/playlist?list=PL4cyC4G0M1RQAV0xCaEjfwAeaFaUuHXuf
All Dot Net and SQL Server Tutorials in English
https://www.youtube.com/user/kudvenkat/playlists?view=1&sort=dd
All Dot Net and SQL Server Tutorials in Arabic
https://www.youtube.com/c/KudvenkatArabic/playlists
In this video we will discuss about installing asp.net mvc. Before installing asp.net mvc, first let's determine what version is already installed. Go to "Control Panel" and click on "Programs and Features".
If you want to create asp.net mvc 3 or 4 applications, then please download and install asp.net mvc 3 and 4 from the following locations.
ASP.NET MVC 3
http://www.asp.net/mvc/mvc3
ASP.NET MVC 4
http://www.asp.net/mvc/mvc4
When you create a new project, make sure you have .NET Framework 4 selected in the drop down list. If you have any other earlier .net framework versions selected, then ASP.NET MVC 3 Web Application and ASP.NET MVC 4 Web Application templates will not be available.

Link for code samples used in the demo
http://csharp-video-tutorials.blogspot.com/2013/07/part-51-advantages-of-using-strongly.html
Link for csharp, asp.net, ado.net, dotnet basics, mvc and sql server video tutorial playlists
http://www.youtube.com/user/kudvenkat/playlists
Make sure to replace [ with LESSTHAN and ] with GREATERTHAN symbol.
There are several ways available to pass data from a controller to a view in an mvc application.
1. ViewBag or ViewData
2. Dynamic type
3. Strongly typed view
The following are the advantages of using strongly typed views. We get
1. Intellisense and
2. Compile-time error checking
With ViewBag and Dynamic type, we don't have these advantages.
Using ViewBag:
Notice that, the employee object is stored in ViewBag.
In HomeController.cs
public ActionResult Details(int id)
{
SampleDBContext db = new SampleDBContext();
Employee employee = db.Employees.Single(x =] x.Id == id);
ViewBag.EmployeeData = employee;
return View();
}
We want to display employee FullName and Gender. Notice that, as we are typing FullName and Gender properties, we don't get intellisense. Also, if we mis-spell FullName or Gender properties, we will not get any compilation errors. We will come to know about these errors only at runtime.
In Details.cshtml View
[div class="display-label"]
@Html.DisplayName("FullName")
[/div]
[div class="display-field"]
@ViewBag.EmployeeData.FullName
[/div]
[div class="display-label"]
@Html.DisplayName("Gender")
[/div]
[div class="display-field"]
@ViewBag.EmployeeData.Gender
[/div]
Using Dynamic Type:
In HomeController.cs
public ActionResult Details(int id)
{
SampleDBContext db = new SampleDBContext();
Employee employee = db.Employees.Single(x =] x.Id == id);
return View(employee);
}
In Details.cshtml View
@model dynamic
[div class="display-label"]
@Html.DisplayName("FullName")
[/div]
[div class="display-field"]
@Model.FullName
[/div]
[div class="display-label"]
@Html.DisplayName("Gender")
[/div]
[div class="display-field"]
@Model.Gender
[/div]
With dynamic type also, we don't get intellisense and compile-time error checking.
Using Strongly Typed View: No change is required in the controller action method. Make the following change to Details.cshtml view. Notice that the view is strongly typed against Employee model class. We get intellisense and if we mis-spell a property name, we get to know about it at compile time.
@model MVCDemo.Models.Employee
[div class="display-label"]
@Html.DisplayName("FullName")
[/div]
[div class="display-field"]
@Model.FullName
[div]
[div class="display-label"]
@Html.DisplayName("Gender")
[/div]
[div class="display-field"]
@Model.Gender
[/div]
Please Note: We discussed enabling compile time error checking in views in Part 50 of the MVC tutorial.

F or 25 years we have provided deluxe wilderness outpost fishing trips from our Armstrong location into beautiful Wabakimi Provincial Park and surrounding lakes.
Yes, we take you where the fishing is extraordinary , but there is more than fishing. Yearly family gatherings sharing a wilderness experience in comfort. Father - son (or daughter) bonding trips or Husband and wife celebrating a second honeymoon with the added spectacular outpost fishing or `the buddy trips where the tall tales get taller.
Its a big time stress reliever! . how do you think about anything else when you are fighting a fish?
Greg and I had a great week. we caught over 1000 walleye. There were well over 200 in the slot size (>18"). This is the most large walleye that have ever been caught on a trip to whiteclay for me. The slot size protection is working. It seems that each trip has more large fish being caught. Our largest northern was 43". It was caught on a jig while walleye fishing.
Greg and I sent see what you missed letters to about a dozen folks. Hope that translates into a large group for next June. . Fran and I are looking forward to the August fishing trip .
G. Ostrander, Green Bay, WI.
Want to see more?

Received your card. Congratulations on 25 Years! We speak often about the great times we had at Ogoki! A Tribute to you both!
Best Regards, Rich Craddock.
What a nice surprise to find your post card in my mail yesterday. Twenty-five years is a long time to do anything; much less a business like yours with all the uncertainties of weather, exchange-rates, two-country economies, etc. There is a reason why your business has survived and (hopefully) thrived. you do the wilderness fishing experience better than anyone in the outdoor sport vacation business.
Dear Judy and Paul,
Congratulations on 25 years. I have many fond memories of my time with Jack at Ogoki. Hope all is well with you.
. . . Nicole will take you on a guided tour!
This website will take you every step of the way for a worry free fishing vacation!
Let us introduce ourselves; Judy & Paul Boucher and family. Weve been doing this for 25 years and have learned a thing or two on how to take the worry out of the wilderness experience. Our staff will help you with anything you may not understand or solve any mechanical glitch right away. In short: we treat you like family!
Just a note to let you know our recent fishing junket to your Mojikit South Outpost.
Ive been coming to Armstrong area since 1972 and have probably flown in with 6-7 different outfitters over the years to numerous outposts. Your Mojikit South camp is clearly the nicest camp I have been to. The cabin is beautiful and roomy. Great kitchen and dining area. Beautiful screened in deck and outside porch overlooking the channel. Large chest freezer and a frig that actually keeps things cold. Screened in fishing cleaning house with running water. Bedrooms that are roomy. Vaulted ceiling the the cabin is a plus. The cabin is centrally located to both the lake and the Ogoki Reservoir.
The boats are the best that Ive ever experienced at an outpost. The inside bottoms consist of flat carpeted panels. easy to get in and out of. 1st time Ive fished an outpost with "dry" feet. The boats had comfortable swivel seats and 15 & 20 hp 4-stroke engines that worked great.
We will definitely be back. Everything about Ogoki Frontier was quality. My two grandchildren had the time of their lives, as did the other 2 members of our party. Thanks for the memories.