Hi Jeffrey, what do you think when your changes are pushed to NHibernate?
Am Mittwoch, 11. März 2015 20:59:01 UTC+1 schrieb Jeffrey Becker: > > 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] [mailto: >> [email protected]] *Im Auftrag von *Jeffrey Becker >> *Gesendet:* Mittwoch, 11. März 2015 18:24 >> *An:* [email protected] >> *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]] *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]] *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]. >> 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. >> >> -- >> >> --- >> 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. >> > -- --- 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.
