CRUD Operations Using the Generic Repository Pattern and Unit of Work in MVC

This article introduces the Generic Repository pattern and Unit of Work in ASP.NET MVC applications. We are developing an application for a Book entity on which we can do Create, Read, Update and Delete operations. To keep the article simple and to make it easy to understand, the Generic Repository pattern and Unit of Work, we use a single book entity in the application.

Read Full Article Here.

Hope this will help !!!

Jay Ganesh

About these ads

Open Source Code Coverage Tool for .NET

In computer science, code coverage is a measure used to describe the degree to which the source code of a program is tested by a particular test suite. A program with high code coverage has been more thoroughly tested and has a lower chance of containing software bugs than a program with low code coverage.

Read more –

OpenCover – an open source code coverage tool for .NET

An open source code coverage tool (branch and sequence point) for all .NET Frameworks 2 and above (including Silverlight). Also capable of handling 32 and 64 bit processes. Use ReportGenerator for best viewing results (also available via Nuget).

To install OpenCover – an open source code coverage tool for .NET, run the following command in the Package Manager Console

PM> Install-Package OpenCover

OpenCover does not directly execute your tests but instead needs to execute another application that executes your tests in this case we are using MSTest.

First lets create a batch file that we can execute our tests from the command line:

OpenCover.Console -register:Administrator -target:”C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\MSTEST.exe” -targetdir:”D:\Source\Build\Test” -targetargs:”/testcontainer:MySoftware.Test.dll” -filter:”+[*]* -nodefaultfilters -mergebyhash -output:results.xml -target :< target application>

It can be a directory of executable file Nunit or MSTEST.


It is the application directory whose code coverage needs to be executed. It should contain all referenced dlls along with PDB files (which is mandatory for code coverage).


Parameters supported for the target application.

-filter :< space separated filters>

A list of filters to apply to selectively include or exclude assemblies and classes from coverage results. Filters have their own format ± [module-filter]class-filter. If no filter(s) are supplied then a default includes all filter is applied +[*]*. As can be seen you can use an * as a wildcard. Also an exclusion filter (-) takes precedence over an inclusion filter (+).


A list of default exclusion filters are usually applied, this option can be used to turn them off. The default filters are:

Under some scenarios e.g. using MSTest, an assembly may be loaded many times from different locations. This option is used to merge the coverage results for an assembly regardless of where it was loaded assuming the assembly has the same file-hash in each location.

-output :< results file name>

Coverage results will get stored in the above file and it resides in the opencover directory or the specified location in the parameter. When executed, OpenCover will produce an XML file (default results.xml) that contains all the data related to that test run.


ReportGenerator converts XML reports generated by PartCover, OpenCover or NCover into a readable report in various formats. The reports do not only show the coverage quota, but also include the source code and visualize which line has been covered.

ReportGenerator supports merging several reports into one. It is also possible to pass one XML file containing several reports to ReportGenerator (e.g. a build log file).

The following output formats are supported by ReportGenerator:

  • HTML, HTMLSummary
  • XML, XMLSummary
  • Latex, LatexSummary
  • TextSummary
  • Custom reports

D:\downloads\ReportGenerator_1.6.1.0\bin>ReportGenerator “D:\Source\Build\Test\results.xml” “D:\downloads\opencover.4.0.804\”

If we open the produced coverage output (coverage\index.htm) we can see the visualization of the coverage of our target code.

Reference Link:

Hope this will help !!!

Jay Ganesh


7 jQuery Code Snippets every web developer must have

jQuery extensively simplified web developer’s life and has become a leader in javascript available libraries. There are a lot of useful jQuery snippets available but here in this post I am going to share 7 basic and widely used code snippets that every front-end web developer must have. Even for those who are new to jQuery can easily understand and get benefit from these routinely used code snippets.

Read Full Article !!!

Jay Ganesh

Scheduled Tasks In ASP.NET With Quartz.Net

A perennial question on the ASP.NET forums concerns how to schedule regular tasks as part of a web application. Typically, the requirement is to send emails once every 24 hours at a particular time each day, but it could actually be anything from tweeting on a schedule to performing maintenance tasks. Equally typically, half a dozen members on the forum dive in with recommendations to install Windows Services or schedule batch files with the Task Scheduler – regardless of the fact that most web site owners are not afforded such privileges as part of their shared hosting plan.

I’ve looked at how you can use the Session_Start event in Global.asax to manage rudimentary “timed” jobs previously. However, it relies on there being sufficient traffic to your web site that the event gets fired often enough for your scheduling needs. And of course, if that is not the case, it is of no use when dealing with time-critical tasks. A much more robust solution can be found in the shape of Quartz.NET – an open source scheduling library which is available via nuget. This article looks at a basic implementation that will get you up and running with a scheduled email job. I have chosen to use a Web Forms application to illustrate the use of Quartz.NET in an ASP.NET setting, but the steps are easily translated to MVC or Web Pages.

Read Full Article :

Hope this will help !!!

Jay Ganesh