Gonris Learn more about Kindle MatchBook. Configuring NHibernate with code. I am using the NHibernate configuration file to achieve this. Chapter 6 is called Data Access Layer.
|Published (Last):||6 August 2017|
|PDF File Size:||6.1 Mb|
|ePub File Size:||1.21 Mb|
|Price:||Free* [*Free Regsitration Required]|
The getting started guide has a good introduction to mapping with the fluent interface, and the detail provided here builds upon that introduction. ClassMap ClassMap is the basis of all your mappings, you derive from this to map anything. The x on the left is the parameter declaration, which will implicitly be of the same type as the entity being mapped, while the x. Property is accessing a property on your entity coincidentally called "Property" in this case.
There are several methods available that map your properties in different ways, and each one of those is a chainable method that you can use to customise the individual mapping. Id Every mapping requires an Id of some kind. The Id is mapped using the Id method, which takes a lambda expression that accesses the property on your entity that will be used for the Id. For example, if your Id property is an int, an identity column is assumed.
Similarly, if you use a Guid then a Guid Comb is assumed. Id ; Note that the property you supply to Id can have any name; it does not have to be called "Id," as shown here. Customisations can be done by chaining methods off the Id call.
For example, if the column to which the Id property was to be mapped were not called Id, we could use the Column method to specify the name. For explicitly specifying the identity generator, you could use the GeneratedBy property. Column "PersonId". Everything you need should be easy to find "under" the declaring method using method chains. Properties Property mappings make up a large amount of any mapped domain.
There are numerous customisations available through methods chained from the Map call. Nullable ; If you need to map private properties, you can explore your options fluent mapping private properties. These will typically take the form of many-to-one, one-to-many, and many-to-many relationships.
As with all other fluent mappings, you can chain calls to customise the reference relationship. Column "AuthorId". We need to join into the books table returning a collection of any books associated with that author.
Collection types Fluent NHibernate does its best to detect the collection type for your collections. As of release 1. If you really do want a one-to-one, then you can use the HasOne method. Cover ; To specify the foreign key, you can use the PropertyRef method. Additionally, if you are using References to specify the bi-directional relationship on the other end of the relationship, be sure to use the.
Unique mapping modifier to effectively specify that this is a one-to-one relationship. In the example below, we are mapping the relationship between a Car entity and a SteeringWheel entity. Car, "CarId". This type of mapping always requires more than one column. The first column holds the type of the associated entity.
The remaining columns hold the identifier. It is impossible to specify a foreign key constraint for this kind of association, so this is most certainly not meant as the usual way of mapping polymorphic associations. You should use this only in very special cases eg. There are three things you need to provide to be able to map using an Any: A column that holds the type of the entity, At least one column holding the identifier value, and A type for the identifier itself.
EntityTypeColumn "Type". EntityIdentifierColumn "Id". The first parameter is a property accessor lambda, like all the other methods, and the second one is another lambda quite often referred to as a nested-closure in these situations that defines a new scope for defining the mappings of that particular sub-part in this case the component.
Number ; m. Street ; m. The second property is where we define what makes up the component. If you have a particular component that occurs regularly in your entities, you can abstract the mappings into a single ComponentMap definition.
City ; m. To supply a prefix, chain a call to ColumnPrefix from your Component property call. See Auto mapping Inheritance for guidance on dealing with subclasses with the automapper. Subclasses work in a very similar way to ClassMap , in that you create a derived class into which you put your mappings, but here you use SubclassMap instead of ClassMap.
There are two strategies for mapping inheritance hierarchies in Fluent NHibernate: table-per-class-hierarchy and table-per-subclass, the former being a subclass and the latter a joined-subclass. This means that you can define one table to hold all subclasses with 1 or more columns used to identify the specific type for each row , or you can define separate tables for each subclass. The parent mapping dictates what the subclass mapping strategy will be, by either specifying or not specifying a discriminator discriminators are required for table-per-class-hierarchy.
If you wanted to do a table-per-class-hierarchy strategy, then you just need to specify the discriminator column in your ClassMap. This parameter specifies the name of the column in the table that identifies which subclass the data in a given row represents. Pages
Subscribe to RSS
FLUENT NHIBERNATE BOOK PDF