Mapping overview
NHibernate as a typical ORM tool, we used to define domain first and then map the database relationship to domain, and the nhibernate mapping was in the form of an XML file. This article from the overall understanding of the next nhibernate mapping process and our way of writing.
Mapping processing process
When we confrontation NHibernate, what did nhibernate do to mapping part of the story?
- Parse Read mapping file
- Deserialize the mapping file (deserialize) to xmldeserialized (that is, the NHibernate.Cfg.MappingSchema.HbmMapping class)
- bind The Hbmmapping class to a metadata map (mapping-metadate), (that is, the NHibernate.Cfg.Mappings class)
- Build sessionfactory
Use a picture (from Fabio Maulo blog) to show the inner workings of nhibernate in detail:
Next we look at the various mapping methods of nhibernate.
Mapping Way
According to my long-term discovery, beginners are often the most eager to ask the question is "how do you usually write mapping files, is generated?", and ask questions sometimes when you post an XML map, you always post the mappings generated using the generator.
There are many ways to write nhibernate mappings now, such as:
- Build tool Software (try not to use it)
- Related open source projects (can be used)
- Write XML manually (recommended)
As you can see from the above diagram, all of the above methods are ultimately generated as XML files and then processed according to the mapping process.
Build Tool Software
Now there are a lot of tools, such as commercial software: Codesmith, Visual NHibernate, open source software: mygeneration, NHibernate modeller, ajgenesis, etc.
Codesmith
Official address: http://www.codesmithtools.com/
NHibernate templates are available to generate mapping files as required.
Visual NHibernate
Official address: http://www.slyce.com/
is the latest Visual nhibernate mapping tool. Can try it, the effect is good.
Mygeneration
Official address: http://www.mygenerationsoftware.com/
Like Codesmith, mygeneration generation tool NHibernate template A variety of, generated mapping, structure, very redundant, for the complex domain will always have a variety of error mapping, most of the time only in a helpless situation to use, But the survey found that generative tools are often a beginner's favorite and don't feel much better.
Ajgenesis
Official address: http://ajgenesis.codeplex.com/
Ajgenesis is an open source project that generates a lot of stuff according to the template you define, supports language Java, JSP, ASP, vb.net, C #, PHP. The build contains entities, pages, solution and project files, store procedures, DDL scripts, and more.
Related Open source projects
Open Source Library has many, such as NHibernate contribution Project DLL2HBM, NHibernate mappingattributes, open source project Castle ActiveRecord, Fluent NHibernate and so on.
Where NHibernate mappingattributes and castle ActiveRecord are mapped using the attribute form in domain, the domain responsibility is completely polluted.
Fluent NHibernate uses the Fluent API as a form of mapping, and its API is still cumbersome, and its final effect is to generate very redundant XML files internally using your mapped fluent.
To write XML in a manual way
Found that more people like to write their own XML files manually, this is more flexible and convenient, I also particularly recommended here, on the one hand, familiar with the mapping skills, on the one hand added experience.
We only need to add the ability to write NHibernate configuration and map Smart hints for Microsoft Visual Studio 2010. Just find the configuration.xsd and nhibernate-mapping.xsd two files in the downloaded NHibernate package and copy them to C:\Program Files\Microsoft Visual Studio 10.0\xml\schemas directory.
Conclusion
Starting with the mapping chapter of NH anatomy, this article first outlines the mapping approach. According to the reaction situation inside the group, after I was divided into two sections began to introduce mapping, respectively from mapping mapping and conform actual combat two angles.
Mapping mapping: Describes the various mapping node mappings, so that you understand the various mapping, using manual XML method.
Conform combat: Using Orum thought to realize the mapping of domain.
I hope this article will be of some help to you.
Copyright NOTICE: This article for Bo Master http://www.zuiniusn.com original article, without Bo Master permission not reproduced.
NHibernate3 Anatomy: Mapping Overview of mapping articles