A fluent interface to NHibernate - Part 4 - Configuration

This is the fourth post in a series of articles where I want to analyze and describe the new upcoming mapping interface providing a fluent interface to NHibernate for the mapping of a domain model to the underlying database. The previous post are

Configuration

In NHibernate we traditionally had several methods how we could configure the database relevant parameters. These are

  • defining all requested configuration parameters in code
  • include a special section in the app.config or web.config file
  • define a hibernate.cfg.xml file
  • define a custom XML file

With the new mapping framework we have one more possibility by using a fluent interface to configure NHibernate. We can define all parameters in our code using a fluent interface. Let's review the various methods to configure our ORM framework.

Defining requested configuration parameters in code

When initializing the NHibernate framework I can configure all necessary parameters in code. I just instantiate a Configuration object and pass it all requested parameters via the SetProperty method. Having set all necessary connection parameters I can now define where my domain model is. In the sample below I take the AddAssembly method to tell NHibernate that all my model classes are to be found in the assembly where the class Blog is defined. NHibernate will then parse the whole assembly for embedded mapping files (e.g. Blog.hbm.xml etc.). In the last line of code I create the session factory. This factory instance I'll then use each time I need a connection to the database.

var cfg = new Configuration();
 
cfg.SetProperty("connection.provider", "NHibernate.Connection.DriverConnectionProvider");
cfg.SetProperty("connection.driver_class", "NHibernate.Driver.SQLite20Driver");
cfg.SetProperty("dialect", "NHibernate.Dialect.SQLiteDialect");
cfg.SetProperty("connection.connection_string", "Data Source=:memory:;Version=3;New=True;");
cfg.SetProperty("connection.release_mode", "on_close");
cfg.SetProperty("show_sql", "true");
 
cfg.AddAssembly(typeof (Blog).Assembly);
 
ISessionFactory factory = cfg.BuildSessionFactory();

In the above sample I'm using SqLite as my database and the connection string is configured such as that the database is in in-memory mode, that is the schema and the data is not written to disk but always kept in memory. I also have told NHibernate to output all SQL sent to the database to the console (for debugging purposes). This is the typical configuration I tend to use in my unit tests.

The app.config or web.config

This is an example of how to specify the database connection properties inside a web.config:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    <section name="hibernate-configuration"         
             type="NHibernate.Cfg.ConfigurationSectionHandler, NHibernate" />
  </configSections>
  
  <hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
    <session-factory>
      <property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property>
      <property name="connection.driver_class">NHibernate.Driver.SqlClientDriver</property>
      <property name="connection.connection_string">Server=(local);database=thedatabase;Integrated Security=SSPI;</property>
      <property name="dialect">NHibernate.Dialect.MsSql2005Dialect</property>
      <property name="show_sql">true</property>
    </session-factory>
  </hibernate-configuration>
  
  <!-- other app specific config follows... -->
  
</configuration>
 

You first have to define a section for NHibernate in the configSections part of the config file. The content of the NHibernate section is then the same as when you use the hibernate.cfg.xml file (see below). In this sample I'm using an SQL Server 2005 database which is installed on the local machine. The connection to the SQL Server uses integrated security. I also have told NHibernate to output all SQL sent to the database to the console.

Now I can initialize NHibernate with the following code

var cfg = new Configuration();
cfg.AddAssembly(typeof (Product).Assembly);
ISessionFactory factory = cfg.BuildSessionFactory();

Note that the necessary configuration parameters are automatically picked up by NHibernate from the app.config or web.config file.

The hibernate.cfg.xml file

Below I present a typical configuration file. Again this sample assumes SqLite as my database.

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
  <session-factory>
    <property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property>
    <property name="dialect">NHibernate.Dialect.SQLiteDialect</property>
    <property name="connection.driver_class">NHibernate.Driver.SQLite20Driver</property>
    <property name="connection.connection_string">Data Source=:memory:;Version=3;New=True;</property>
    <property name="connection.release_mode">on_close</property>
 
    <property name="show_sql">true</property>
  </session-factory>
</hibernate-configuration>

This file must be present in the same directory as the application that uses it. Then NHibernate can automatically pick it up when you initialize the framework.

var cfg = new Configuration();
cfg.Configure();
 
cfg.AddAssembly(typeof (Blog).Assembly);
 
ISessionFactory factory = cfg.BuildSessionFactory();

We have to instantiate a NHibernate Configuration object and call the method Configure. When doing this the default behavior is that NHibernate looks for a file called hibernate.cfg.xml in the application directory an opens it if available.

A custom XML file

The content of the file must be structured the same way as in the hibernate.cfg.xml presented above. But you can name the file however you want and you are also free to choose it's location. When you initialize NHibernate you have to provide the respective information about your configuration file.

You can pick a different XML configuration file using the following syntax

var cfg = new Configuration();
cfg.Configure(Path.Combine(AppDomain.CurrentDomain.BaseDirectory,"my_config_file.xml"));
 
cfg.AddAssembly(typeof(Product).Assembly);
 
ISessionFactory factory = cfg.BuildSessionFactory();

The method Configure accepts a parameter indicating the full path to my custom XML file.

Use a fluent interface to configure NHibernate

All the above samples are not really complicated but have the disadvantage that we have to deal with strings (configuration in code) or with XML. XML is not really nice to read and certainly not wrist friendly. Also there is no compile time error checking. Any typos introduced will only be detected during runtime.

Comes the fluent interface to the rescue. I can now configure NHibernate in a strongly typed fashion. Have a look at the following code

var cfg = new MyConfiguration()
    .ShowSql()
    .Driver<SQLite20Driver>()
    .Dialect<SQLiteDialect>()
    .ConnectionString.Is("Data Source=:memory:;Version=3;New=True;")
    .Raw("connection.release_mode", "on_close");

A few remarks to this code

  • no need to define a connection provider (it's always and has always bee NHibernate.Connection.DriverConnectionProvider and thus this is configured implicitly by the framework)
  • all commonly used parameters can be configured using strong typing
  • generic methods are used wherever flexibility is needed (e.g. the method .Driver<T>() where T represents the concrete driver you want to choose)
  • the method Raw can be used whenever we need to configure non-standard (that is database specific) parameters. In the sample above I define the connection release mode for the SqLite database.
  • The connection string can either be defined in place (as in the above sample) or
    • be retrieved from the appSection in the web.config or app.config file
      .ConnectionString.FromAppSetting("MyConnectionString")
    • be retrieved from the connectionStrings section in the web.config or app.config file
      .ConnectionString.FromConnectionStringWithKey("MyConnectionString")

There are other methods we can use to further configure NHibernate (e.g. UseOuterJoin, MaxFetchDepth and UseReflectionOptimizer)

Now I have to say some words to the MyConfiguration class used in the sample above... This class inherits from the PersistenceConfiguration class of the fluent interface framework and contains no code.

public class MyConfiguration : PersistenceConfiguration<MyConfiguration>
{
}

For some databases there are even pre-defined configuration classes that facilitate the job even further. For SqLite I can then write

var cfg = new SQLiteConfiguration()
    .InMemory()
    .DoNot.ShowSql();

Really nice! Please note also the DoNot... syntax to revert some boolean settings like ShowSql or UseOuterJoin, etc.

Now a complete sample how to configure and use NHibernate

var nhibernateConfig = new Configuration();
var cfg = new SQLiteConfiguration()
    .InMemory()
    .ConfigureProperties(nhibernateConfig);
 
var sessionSource = new SessionSource(cfg.Properties, new MyPersistenceModel());
 
using (var session = sessionSource.CreateSession())
{
    var product = new Product { Name = "Product 1", UnitPrice = 10.55m, Discontinued = false };
    session.Save(product);
}

First I instantiate an object of type NHibernate.Cfg.Configuration. I then instantiate an object of type SQLiteConfiguration which is defined in the mapping framework. With the ConfigureProperties method I tell this object to configure the NHibernate configuration object which I pass as a parameter. Then I instantiate a SessionSource object an pass it the properties of my SqLite configuration object as well as my persistence model. Last I use this session source to create a new session and insert a new product into the database. (Please refer to the previous articles of this series for a description of the persistence model).

Summary

Various methods exists how one can configure NHibernate. None of them is really complicated. But the new mapping framework facilitates the configuration even more and has the following advantages over the other methods

  • type safety (and thus also re-factor friendly)
  • good readability
  • intellisense support

Enjoy

Blog Signature Gabriel .

Print | posted on Monday, August 25, 2008 7:07 PM

Comments on this post

# re: A fluent interface to NHibernate - Part 4 - Configuration

Requesting Gravatar...
This looks better and better. I think that when NH hits version 2.1 with LINQ support and the fluent interface is finish. it will give NH the break trough it deserves.
Left by Martin Nyborg on Aug 26, 2008 5:45 PM

# re: A fluent interface to NHibernate - Part 4 - Configuration

Requesting Gravatar...
This is really nice.
Providing a fluent interface for NHibernate is a great move, especially in the mapping space. It should really help with the adoption of NHibernate in general (IMHO). I know that the XML mappings for properties really put me off in the early days, trying to work it out from samples and the java documentation etc.
Great work! PK :-)
Left by Paul Kohler on Aug 27, 2008 4:09 PM

# re: A fluent interface to NHibernate - Part 4 - Configuration

Requesting Gravatar...
*breath* finished reading for today. Only the posts left from may and june. Great series!

I'm runnig for cover. I'm very excited and looking forward for the complete API of the FluentInterface and the LINQ stuff seeing the NH bomb hitting the ground!

Left by Rainer Schuster on Sep 06, 2008 2:49 PM

# re: A fluent interface to NHibernate - Part 4 - Configuration

Requesting Gravatar...
this series is realy nice and clears a lot of things for me. One thing I'm curious about is how to map a self join table like an employee mapping between staffs and managers. Can you shed some life on this please. Thank you
Left by Godwin on Feb 15, 2009 7:18 PM

# re: A fluent interface to NHibernate - Part 4 - Configuration

Requesting Gravatar...
I know that the XML mappings for properties really put me off in the early days, trying to work it out from samples and the java documentation etc.
Great work! PK :-)
Left by Orkut Greetings on Nov 16, 2009 10:53 AM

# re: A fluent interface to NHibernate - Part 4 - Configuration

Requesting Gravatar...
Thank you for your great post
Left by free car insurance quote on Dec 06, 2009 8:08 PM

# re: A fluent interface to NHibernate - Part 4 - Configuration

Requesting Gravatar...
I'm trying a very similar example with a one-to-many entity mapping similar to Blog.
The problem is, the PersistenceSpecification instance doesn't offer access to the actual blog instance, so I can't call the blog.AddPosts(...) method, resulting in "System.ApplicationException: Actual count does not equal expected count" - because the BlogID value is never set for the Post objects.
Left by online casinos on Dec 08, 2009 5:48 PM

# re: A fluent interface to NHibernate - Part 4 - Configuration

Requesting Gravatar...
I think your statement is true from pretty much -any- point of view. But I expect the list of attributes to grow long for many of the types, and I don't feel comfortable defining a test for each one. Perhaps one day I will start to feel the pain and change my mind, but at the moment this is lower friction and feels fine.
Left by online backgammon on Dec 15, 2009 11:45 PM

# re: A fluent interface to NHibernate - Part 4 - Configuration

Requesting Gravatar...
so I can't call the blog.AddPosts(...) method, resulting in "System.ApplicationException: Actual count does not equal expected count" - because the BlogID value is never set for the Post objects.
Left by pandora jewelry on Dec 24, 2009 11:57 PM

# re: A fluent interface to NHibernate - Part 4 - Configuration

Requesting Gravatar...
Very nice post. Information given is nicely elaborated.
Left by Kevin on Jan 12, 2010 2:05 AM

# re: A fluent interface to NHibernate - Part 4 - Configuration

Requesting Gravatar...
Fluent is an interface to NHibernate, so you can do anything you could do with NHibernate. A good example is performing queries. I searched all over for information on how to perform queries using Fluent for NHibernate and didnt find any. And then when it dawned on me that I could use NHibernate, I found a ton
Left by health coverage on Jan 12, 2010 6:56 AM

# re: A fluent interface to NHibernate - Part 4 - Configuration

Requesting Gravatar...
me too
Left by make money online on Jan 16, 2010 1:19 PM

# re: A fluent interface to NHibernate - Part 4 - Configuration

Requesting Gravatar...
The only thing you can’t configure, using FluentConfiguration, is the SharedEngineProvider because it is configurable only trough application config (by the way, from what I saw on the NET, an explication about what is the SharedEngineProvider is needed).

For the configuration, I have add two extensions methods, both named ValidationDefinitions(), to Assembly and to IEnumerable.
Left by ppo plans on Feb 01, 2010 5:42 AM

# re: A fluent interface to NHibernate - Part 4 - Configuration

Requesting Gravatar...
Your jewellery will be more pandora jewellery durable and more pandora jewellery beneficialpandora jewelryto your eyes if you care the following tips in our daily lives. Always wear the jewellery:, so they often wear pandora jewelleryand take off the jewellery. Actually, Some myopes are worried that wearing jewellery will deepen pandora jewellery the myopic degree pandora beads to see things squint when this worry is needless. You need to know wear pandora braceletsto correct vision, slow down pandora beads the development of pandora beads myopia. Ciliary muscle will be in a state of overstrain and If you often pandora beads wear off frequently, not wear, over time, make ciliaris. pandora rings, and eyes will be in a state of over-regulation causing spasm, which brings about degrees deepen.jgghf
Left by pandora beads on Feb 03, 2010 6:14 PM

# re: A fluent interface to NHibernate - Part 4 - Configuration

Requesting Gravatar...
I want to have a boolean property in my entitiy (IsActive) and i want that fluent hibernate saves it as an integer in the database (because database can not handle bool). and i want to write a short converter to convert my own int values to bool and vice versa... I found out that there is the interface IUserType, but i'm not sure, how to bind such an object at my boolean IsActive property?
Left by bonus des casinos gratuits on Feb 04, 2010 7:09 PM

# re: A fluent interface to NHibernate - Part 4 - Configuration

Left by ugg boot on Feb 08, 2010 7:21 PM

# re: A fluent interface to NHibernate - Part 4 - Configuration

Requesting Gravatar...
Thanks for sharing. i really appreciate it that you shared with us such a informative post..
Online Criminal Justice degree | adult education degree | early education degree | Online Special Education degree | Online Teaching Assistant degree
Left by siomy on Feb 09, 2010 10:00 PM

# re: A fluent interface to NHibernate - Part 4 - Configuration

Left by cheap picture frames on Feb 22, 2010 6:10 PM

# re: A fluent interface to NHibernate - Part 4 - Configuration

Left by custom essay writing on Feb 22, 2010 9:45 PM

# discount ed hardy women long sleeve shirts sales online

Requesting Gravatar...
YS0225A5 If you think you are beaten, you are! If you think you dare noted hardy clothing, you don't! If you want to win but think you can't, It's almost a cinch you won't ed hardy hoodies! If you think you'll lose,you're lost! For out of the world we find.Success beins with a fellow's will,It's all in a ed hardy shirts state of mind! Life's battles don't always go.To the stronger and faster ed hardy coats man,But sooner or later the man who wins,Is the man who thinks he can! When You Belive http://www.edfashionclothes.com/,Many night we've prayed!With no proof anyone could hear!In our heart a hopeful moncler online store song,we barely understood!Now we are not afraid !Although we know there's much to fear!We were moving the moncler jackets mountian long,Before we knew we could!There can be miracles!
Left by discount mens moncler down coat on Feb 24, 2010 9:57 PM

# discount Ugg Broome Boots in chestnut leather online sales

Requesting Gravatar...
YS0225A8 Before there was no reason in the world,As now there i!The moncler jackets course of water was my only course,My repetitions oceans' sough and swell ugg adirondack boots!My seasons pleasurable,Before there was no reason in the world,As now there is ugg broome boots!To measure time from sleep I rose to sleep,To measure space I pastured on surprise http://www.edhardy-buy.com/,O meadows of resemblances,I was the grove on whose mosaic floors,The moncler online seeds of otherwise were spent,My gods had many arms,I was the Caesar of unmarshaled grass ugg boots!Faustus in the branches,My first ambitions were my sorrows long!Before there was no reason in the world,As now there is!
Left by discount womens moncler jacket on Feb 24, 2010 10:45 PM

# discount air jordan shoes 23 sales online

Requesting Gravatar...
YS0225A7 when the sun hugs the moon, the sky clses her eyes.when the sun hug the moon the sea quiet her jordans shoes.when the sun hugs the moon,the forest stops her susurrus.when the sun hugs the nike sb dunk high,the desert hodlds hebreathe.Thousands of years's waiting is only for this nike acg shoes moment.Never be disappointed.Never give up.It hax been sucha long time.At nike air max 2003 this momentmeet each other in course of time.Do not cry,Moon.I guard you forever.Cause you are in my life,everyting has its meaning.The fascinating Diamond Ring,is the ring i give you,May it give you warm http://www.nikejordanshoes2sell.com/ threduce your tears.Do not cry,Sun,I will be there with you forever/Meeting you has given me precious memeory.The resplendent Baily Beads.is the gem i give you .May i give you cheap air jordan 22 shoes strength, shine in your morning.Meet soon and part soon.It makes peop;e retrospect in spite of lasting a few minutes.A long times waiting is coming.Don't know when the next meeting is .When the sun hugs the Moon. the Moon hugs the sun as well Hugging tightly,regian the lost nicety.
Left by discount nike air max shoes sale on Feb 24, 2010 10:47 PM

# discount air jordan shoes 25 sales online

Requesting Gravatar...
YS0225A6 When you belive,Though hope is frail.It's hard to kill,Who knows what cheap prada shoes miracles,You can achieve,When you belive! Somehow you will,

You will when you belive new nike air max!And in this time of far, When prayer so often proves in vain, Hope seems like the http://www.nikeaf1jordanshoes.com/summer birds. Too swiftly flown away, And now I am standing wholesale gucci shoes here.My heart's so full I can't explain.Seeking faith and speaking women's nike shox words I never thought I'd say, They don't always happen when you ask authentic air jordan shoes.And it's easy to give in to your fear. But when you're blinded by your pain!
Left by discount mens moncler down coat on Feb 24, 2010 10:48 PM

# discount christian louboutin sandals online sales

Requesting Gravatar...
YS0226A1 That your heart has been broken,Hear the wors,I'm here, my child,;And know your christian louboutin uk angel has spoken.For even in the darkest hour,When all of discount louboutin shoes hope seems gone,They'll give you strength to live your life,And desire to go on.And if your faith in Heaven, Should ever fade away,They'll help renew your christian louboutin boots spirit, And help you find your way.Even though you're ever filled with doubt, About the christian louboutin pumps life you live,Know that they are there to give you All that they can give.For you see, the Father sent them,Because to Him, you mean so much,That He sent them just for you,my louboutin sale friend,And your life, they will touch.They will always be here,They will never leave your http://www.christianlouboutinshoestore.com/ side;And upon their strength and guidance,You always may rely.Take comfort in their guidance, Draw strength from up above,And know that their sweet presence,Is God's precious gift of love.
Left by cheap christian louboutin shoes on Feb 25, 2010 3:31 PM

# discount women's ugg elsey boots 5596 sales online

Requesting Gravatar...
YS0226A2 If I were a boy again, I would practic perseverance more often, and never give up a thing because it was ugg australia boots or inconvenient. If we want light, we must conquer darkness. Perseverance can sometimes equal genius cheap ugg boots in its results. “There are only two creatures,” syas a proverb, “who can surmount the pyramids—the eagle and the snail.” If I were a uggs sale boy again, I would school myself into a habit of http://www.topsnowboots.com/ attention; I would let nothing come between me and the subject in hand. I would remember that a good skater never tries to skate in two ugg cardy boots directions at once. The habit of attention becomes part of our life, if we begain early enough. I often hear cheap gucci shoes grown up people say “ I could not fix my attention on the sermon or ugg coquette book, although I wished to do so” , and the reason is, the habit was not formed in youth.
Left by cheap ugg upside boots 5163 on Feb 25, 2010 3:38 PM

# discount Women's ugg adirondack boots II sales online

Requesting Gravatar...
YS0226A3 Hold fast to dreams.For if dreams . Life is a broken-winged bird,That ugg australia boots can never fly.Hold fast to dreams. For when dreams go,Life is a barren ugg tall boots field, Frozen only with snow !You never know until you try; And you never try unless you really try ugg cardy boot. You give it your best shot; You do the best you can. And if you have done everything http://www.uggsnowbootsbest.com/! In your power,and still,The truth of the uggs argyle knit matter is! That you haven\'t failed at all.When you reach for your dreams,No matter what ugg boots they may be,You grow from the reaching;You learn from the trying;You win from the doing.
Left by cheap ugg classic cardy boots on Feb 25, 2010 3:46 PM

# discount reebok nfl jerseys online sales

Requesting Gravatar...
YS0226A4 A true friend is someone who reaches for your hand your cheap hockey jerseys heart.There's always going to be people that hurt you,so what you have to do is keep on trusting nfl jerseys and just be more careful about who sport jerseys you trust next time around.Make youself a better person and know who you are discount nba jerseys before you try and know someone else and expect them to know you mlb jerseys on sale.Remember:Whatever happens,happens for a reason.How many people actually have 8 true http://www.nfljerseymlb.com/friends Hardly anyone I know.But some of us have all right friends and good friends.
Left by cheap adiads nba jerseys sale on Feb 25, 2010 3:52 PM

# discount ugg sienna miller boots 5818 sales online

Requesting Gravatar...
YS0226A9 Unwearied still, lover by lover,They pdle in the cold,Companionable ugg australia shoes streams or climb the air;Their hearts have not grown old;ugg coquette Passion or conquest, wander where they will, Attend upon them still ugg adirondack boots. But now they drift on the still water, Mysterious, beautiful; Among what http://www.uggboots4buy.com/ rushes will they build, By what lake’s edge or pool,Delight men’s mbt shoes eyes when I awake some day.To find they have flown uggs classic cardy away?Before there was no reason in the world As now there is I was the bough bent easy by a ugg boots bird I was the vague blue-grazing flock The sleeping and invisible!
Left by cheap women's ugg elsey boots on Feb 25, 2010 3:55 PM

# discount mens air jordan shoes 13 online sales

Requesting Gravatar...
YS0226A10 When you are old and gray and full of sleep,And nng by the moncler jackets fire, take down this book! And slowly read jordans sheoes , and dream of the soft look,Your eyes had once, and of their cheap nike shoes shadows deep;How many loved your moments of glad grace,And loved your beauty with nike air force 1 love false or true; But one man loved the pilgrim soul in you,And http://www.onestop-onlineshopping.com/ loved the sorrows of your changing face; And bending down beside the designer clothing glowing bars,Murmur, a little sadly, how love fled.And paced upon the mountains overhead discount air jordan shoes,And hid his face amid a crowd of stars.
Left by cheap nike air max 90 online on Feb 25, 2010 4:01 PM

# discount louis vuitton damier canvas handbags online sales

Requesting Gravatar...
YS0226A11 Surrounding you are angels,They are there to guide your path.If designer purses weaesskn overcomes you,They'll give you strength if you will ask. Th are your protection.When discount designer bags on sale life seems too hard to bear,And though you feel alone at times, The louis vuitton 2009 angels ... they are there.Their faces may be hidden And their voices you might not hear,But they are ALWAYS with you,Through your laughter or your tears.http://www.handbags4buy.com/ They'll walk along beside you,They'll guide your leather handbags steps along the way, They'll comfort you and hold you,Protect you dior handbags night and day.They'll hold to your hand tightly ,They'll not ever let it go,And they'll gently lead you cheap designer handbagsforward,Taking each step very slow.For even as you slumber,They watch closely over you;They are there beside you. In each and every thing you do.
Left by cheap nike air max 90 online on Feb 25, 2010 4:08 PM

# re: A fluent interface to NHibernate - Part 4 - Configuration

Requesting Gravatar...

wedding dresses,wedding gowns,bride dresses,bridesmaids dresses,evening dresses,bridal gowns,flower girl dresses
Wedding Gowns
Formal Gowns
Cocktail Gowns
Find the wedding dress designer and wedding dress that's right for you! Browse dresses from
Bridesmaid Gowns
Evening Gowns
View our selection of exquisite, handmade gowns and dresses for your wedding
Wedding Dresses, Wedding Shoes and Wedding Accessories from wedding shop, the UK's finest collection of designer wedding dresses.
Use the wedding dress and
cheap wedding
wedding dresses
wedding shop
qqqq
Left by sbb on Feb 27, 2010 10:14 PM

# re: A fluent interface to NHibernate - Part 4 - Configuration

Requesting Gravatar...

wedding dresses,wedding gowns,bride dresses,bridesmaids dresses,evening dresses,bridal gowns,flower girl dresses
Wedding Gowns
Formal Gowns
Cocktail Gowns
Find the wedding dress designer and wedding dress that's right for you! Browse dresses from
Bridesmaid Gowns
Evening Gowns
View our selection of exquisite, handmade gowns and dresses for your wedding
Wedding Dresses, Wedding Shoes and Wedding Accessories from wedding shop, the UK's finest collection of designer wedding dresses.
Use the wedding dress and
cheap wedding
wedding dresses
wedding shop


zzzz
Left by sbb on Mar 02, 2010 8:12 PM

# re: A fluent interface to NHibernate - Part 4 - Configuration

Left by links of london on Mar 03, 2010 7:50 PM

# re: A fluent interface to NHibernate - Part 4 - Configuration

Requesting Gravatar...
Very interesting and informative site!
Left by ucvhost on Mar 06, 2010 2:27 AM

# ugg boots

Requesting Gravatar...


they are very good and useful!!!
ugg outlet
cheap uggs
nike shoes
wholesale watches nvxk
Left by ugg boots on Mar 07, 2010 5:33 PM

# re: A fluent interface to NHibernate - Part 4 - Configuration

Requesting Gravatar...
It’s hard to find knowledgeable people on this topic, but you sound like you know what you’re talking about! Thanks Don’t stop writing, you’ve given me lots of good info! Youtube to MP4 Converter
Convert PDF to image
23d
Left by powerpoint on Mar 08, 2010 2:27 PM

# re: A fluent interface to NHibernate - Part 4 - Configuration

Requesting Gravatar...
Excellent post,interesting article,thanks for sharing.
Gucci
wholesale gucci shoes
cheap Gucci handbags
discount gucci shoes
cheap Gucci shoes
Thanks!
Left by gucci shoes on Mar 09, 2010 9:34 PM

# re: A fluent interface to NHibernate - Part 4 - Configuration

Requesting Gravatar...
How to use Remote Desktop Connection for the two systems which have same IP Address?
Best Windows VPS Hosting by ucvhost If you choosing for the best windows vps | cheap vps | windows hosting | Cheap Hosting | Forex Vps hosting service, you need to hunt for those virtual private servers that can run as isolated processes while being part of a Web Server, and provide you complete privacy and root access as the VPS owner. You should also ask for CPU resources, guaranteed bandwidth, memory, and disk space, to make the most of your chosen Windows VPS hosting service. Thanks ucvhost
Left by ucvhost on Mar 10, 2010 2:05 AM

# re: A fluent interface to NHibernate - Part 4 - Configuration

Requesting Gravatar...
Firstly I will talk about UGG boots' Origin. cheap ugg boots has been created in Australia during the First World War, by the Australian pilot, who wrapped in sheep's clothing with two feet into the shoes to protect from the cold weather. Then it gradually became popular in Australia. Initially the name came in, called ugg boots sale which means ugly shoes. Later, Australians nicknamed it ugg boots deutschland. Until 1994, an American registered the an quan jiexian trademark of UGG Australia, and began to produce UGG boots in a large scale. Today, ugg Australia is a very popular brand in the world.
Left by cheap ugg on Mar 10, 2010 6:46 PM

Your comment:

 (will show your gravatar)
 
Please add 4 and 1 and type the answer here: