Honestly I'd assumed that would be the something left to consuming developer to correct. Repo is up here <https://github.com/jeffreyabecker/FluentMigrator.NHibernate>. Hit me up via email or at least lets start a new thread.
On Wednesday, March 11, 2015 at 3:28:58 PM UTC-4, Amro El-Fakharany wrote: > > Jeffrey, > > I would say that it looks good to my eyes in terms of pure schema > extraction. > > > > But this won’t work if you’re going down the path of determining changes > in mappings and then automatically create migration expressions! > > You will need to track entity and property mapping changes and thus > extract the schema out of both not just the table associated with an entity. > > For example, PropertyX mapped to ColumnX and then changed to ColumnY. You > won’t be able to detect that this needs an alter column expression unless > you extract the schema out of PropertyX. > > > > We can work on this together if you are interested. Do you have a public > repo for this? > > > > *Von:* [email protected] <javascript:> [mailto: > [email protected] <javascript:>] *Im Auftrag von > *Jeffrey > Becker > *Gesendet:* Mittwoch, 11. März 2015 18:24 > *An:* [email protected] <javascript:> > *Betreff:* Re: [nhibernate-development] Re: Migrations Status & Feedback > request > > > > Amaro, > > > > Could I get your feedback on this Gist > <https://gist.github.com/jeffreyabecker/4d379e13c165df8240ce>of how to > extract the schema from Configuration? > > On Tuesday, March 10, 2015 at 4:50:03 PM UTC-4, Jeffrey Becker wrote: > > I remember having to modify the Enhanced stuff but I've never seen anyone > use that so I'll just skip it. > > On Tuesday, March 10, 2015 at 3:50:45 PM UTC-4, Amro El-Fakharany wrote: > > 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:* [email protected] [ > mailto:[email protected] <javascript:>] *Im Auftrag > von *Jeffrey Becker > *Gesendet:* Dienstag, 10. März 2015 19:40 > *An:* [email protected] > *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:* [email protected] [ > mailto:[email protected] <javascript:>] *Im Auftrag > von *Jeffrey Becker > *Gesendet:* Montag, 16. Februar 2015 14:26 > *An:* [email protected] > *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 [email protected] <javascript:> > . > 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 [email protected] <javascript:> > . > 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 [email protected] <javascript:> > . > 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 [email protected]. For more options, visit https://groups.google.com/d/optout.
