Can anyone recommend good tutorial on repository pattern usage, in C#?
A good place is the book Applying Domain-Driven Design and Patterns [1] by Jimmy Nilsson
My blog post: Using the unit of work-per-request pattern in ASP.NET MVC [2] also details a Repository implementation in C#.
[1] http://www.jnsk.se/adddp/I'm using one from Mike Hadlow (http://mikehadlow.blogspot.com/)
With LINQ and some IoC, it's really joy to programm...
Also, it's easy to make fake repository based on mike's interface and do some TDD:)
The repository pattern is fairly straight forward, but transactions, and associations(has one, has many) can make it more complex/advanced.
Here is a simple/effective implementation i'm using from CommonLibrary.NET [1]
It supports the following:
1.Create, Retrieve, Update, Delete, GetAll, DeleteAll, FindByQuery, GetPage, etc methods
2.RepositorySql base class, just implement Create/Update & use conventions e.g. Id
3.It also has an In-Memory Repository implementation. Very useful for unit-tests testing.
However, to be objective, here is a list of all I'm aware / heard of:
Rhino.Commons [2] Repository (very extensive)
CommonLibrary.NET [3] Repository (light-weight and effective)
Sharp Architechture [4] Repository (good, generic and NHibernate implementation)
I feel that NHibernate is the best ORM to implement the repository pattern with, particularly because there is very little code involved and also because it allows absolutely zero coupling with your domain model. There is a great example [1] on code.google that depicts the proper way to implement the Repository pattern using NHibernate (with FluentNHibernate).
(Full disclosure: I am the owner of said code.google project.)
[1] http://code.google.com/p/nhibernate-repository-example/This post describes the approach I use:
http://colinjack.blogspot.com/2007/11/repository-implementation-dddnhibernate.html
I'd be careful about expecting to be able to copy/paste a solution though, in my experience with repositories its better to evolve your own implementation.
I'm not sure one exists. I assume you've looke at the Martin Fowler EA description? [1]. If you have the book, it's very explicit about all the patterns and quite good. In my oppinion :)
Maybe this would be nice opportunity to make one here on this site.
[1] http://martinfowler.com/eaaCatalog/repository.htmlThis video http://www.asp.net/learn/mvc-videos/video-403.aspx goes into it some. This video is in VB, but someone converted into C#; and the code is here http://panjkov.qsh.eu/files/folders/aspnetmvc/entry69.aspx
This is how i learned it:
What i also learned was: IoC containers, ... It's a very good project, stripped in layers and it already has a renewed (more advanced) version. I'd suggest to use the previous version as a start and then upgrade your skill.
[1] http://efmvc.codeplex.com/SourceControl/list/changesetsRocket Framework for windows form is one of the best and it is unique and most itelligant way of applying the repository pattern..
It has a one generic repository for all the entities.. that is something I have never seen before..
You may find the source code of it here..
http://rocketframework.codeplex.com/
[1] http://rocketframework.codeplex.com/