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.

Reply via email to