1) A PersistentClass holds a couple of Property iterators. I would first try “SubclassPropertyClosureIterator” (but I’m not really sure!).
Each Property instance holds a collection of Column objects called “ColumnIterator”. To get the type of a column you just call: column.GetSqlTypeCode(mapping). You get that “mapping” argument by calling BuildMapping() on a Configuration instance which you should do before accessing ClassMappings for the first time. Here is a pseudo code example: var mapping = nhConfiguration.BuildMapping() foreach(var pc in nhConfiguration.ClassMappings) { foreach(var property in pc.SubclassPropertyClosureIterator) { foreach(var col in property.ColumnIterator) var dbType = col.GetSqlTypeCode(mapping).DbType } } 2) As far as I can tell, the only true black box identifier is TableGenerator. If I’m not completely mistaken the rest should be accessible through PersistenceClass.IdentifierProperty.ColumnIterator Amro Von: nhibernate-development@googlegroups.com [mailto:nhibernate-development@googlegroups.com] Im Auftrag von Jeffrey Becker Gesendet: Dienstag, 10. März 2015 19:40 An: nhibernate-development@googlegroups.com Betreff: Re: [nhibernate-development] Re: Migrations Status & Feedback request Amaro, I started going down the path you suggested and I'm running into some pretty big road blocks. 1) Resolving the type of a column requires access to the mapping which is private to Configuration 2) PersistentIdentifiers are black-boxes which keep their params private and spit out some sql. These are both pretty big blockers which my code addresses through the operations framework. I'm definitely much more interested in using FluentMigrator to do the actual migrations but at this point NHibernate doesn't expose the information FluentMigrator needs. On Monday, February 16, 2015 at 9:15:49 AM UTC-5, Amro El-Fakharany wrote: Take a look at the implementation of IterateGenerators in the Configuration class (the last method in Configuration.cs). It shows how to get hold of identifier generators. As for auxiliary objects the easiest way I can ad hoc think of would be to subscribe to one of the Events BeforeBindMapping or AfterBindMapping of Configuration. Both events gets HbmMapping as a property of the argument BindMappingEventArgs. In the event handler you just iterate over HbmMapping.DatabaseObjects. I won’t overestimate the importance of auxiliary objects though. Von: nhibernate-...@googlegroups.com <javascript:> [mailto:nhibernate-development@googlegroups.com <javascript:> ] Im Auftrag von Jeffrey Becker Gesendet: Montag, 16. Februar 2015 14:26 An: nhibernate-...@googlegroups.com <javascript:> Betreff: Re: [nhibernate-development] Re: Migrations Status & Feedback request I did look into using the PersistentClass property but that doesn't seem to include information about identifier generators or auxiliary db objects. My first thought with this was to simply spider configuration and spit out a fluent migrator based class. I went down the whole operations framework path after concluding that all the mapping information I needed just wasn't available. On Saturday, February 14, 2015 at 9:54:00 AM UTC-5, Amro El-Fakharany wrote: There is no need to read XML files or interpret mapping-by-code stuff. All of the required mapping information ends up in PersistentClass which is exposed in Configuration through the Enumerable Property ClassMappings if I remember correctly. -- --- You received this message because you are subscribed to the Google Groups "nhibernate-development" group. To unsubscribe from this group and stop receiving emails from it, send an email to <javascript:> nhibernate-development+unsubscr...@googlegroups.com. For more options, visit <https://groups.google.com/d/optout> https://groups.google.com/d/optout. -- --- You received this message because you are subscribed to the Google Groups "nhibernate-development" group. To unsubscribe from this group and stop receiving emails from it, send an email to nhibernate-development+unsubscr...@googlegroups.com <mailto:nhibernate-development+unsubscr...@googlegroups.com> . For more options, visit https://groups.google.com/d/optout. -- --- You received this message because you are subscribed to the Google Groups "nhibernate-development" group. To unsubscribe from this group and stop receiving emails from it, send an email to nhibernate-development+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.