After implements it I hope to see a wiki page in NhForge how-to http://nhforge.org/wikis/howtonh/default.aspx
On Thu, Aug 5, 2010 at 12:49 PM, Fabio Maulo <[email protected]> wrote: > After add all mappings and before SchemaExport/BuildSessionFactory you can > iterate NH's metadata and auto-add database-objects. > var mappings = > configuration.CreateMappings(Dialect.Dialect.GetDialect(configuration.Properties)); > foreach (var table in mappings.IterateTables) > { > foreach(var fk in table.ForeignKeyIterator) > { > IAuxiliaryDatabaseObject auxdo = CreateAlterFk(fk ); > mappings.AddAuxiliaryDatabaseObject() > } > } > > On Thu, Aug 5, 2010 at 12:33 PM, v64 <[email protected]> wrote: > >> Fabio, >> >> Thanks for your quick reply. >> >> I've tried to do this through a custom dialect and ran into a problem >> because of the way NHibernate builds the constraint string. >> >> ForeignKey.SqlCreateString() adds "alter table <table_name> ", then >> calls >> ForeignKey.SqlConstraintString() which appends the output from >> Dialect.GetAddForeignKeyConstraintString(), normally something like >> "add constraint [blah] foreign key ([blah]) references [blah]" >> after that ForeignKey.SqlConstraintString() tacks on " on delete >> cascade" if cascade delete is enabled. >> >> What I need to generate is two separate commands for each foreign >> key. >> >> ALTER TABLE [pf].[Invoice] WITH NOCHECK ADD CONSTRAINT >> [FKDC60817A07C258D] FOREIGN KEY ([BillTo]) REFERENCES [pf]. >> [OrderContact] NOT FOR REPLICATION >> ALTER TABLE [pf].[Invoice] NOCHECK CONSTRAINT [FKDC60817A07C258D] >> >> I could output "WITH NOCHECK ADD CONSTRAINT ..." in >> Dialect.GetAddForeignKeyConstraintString() and then tack on the second >> ALTER to it (which is kind of a hack in itself). But now if cascade >> delete is enabled, ForeignKey.SqlConstraintString() will add "on >> delete cascade", and that will break it. >> >> Any ideas? >> >> TIA >> v >> >> On Aug 5, 9:44 am, Fabio Maulo <[email protected]> wrote: >> > On Wed, Aug 4, 2010 at 6:48 PM, Jason Dentler <[email protected] >> >wrote: >> > >> > > You can probably create a custom dialect to do this. I'm not sure if >> > > there's an easier way. >> > >> > Yes Jason, that is the easy way. >> > Method >> > GetAddForeignKeyConstraintString >> > -- >> > Fabio Maulo >> >> -- >> You received this message because you are subscribed to the Google Groups >> "nhusers" group. >> To post to this group, send email to [email protected]. >> To unsubscribe from this group, send email to >> [email protected]<nhusers%[email protected]> >> . >> For more options, visit this group at >> http://groups.google.com/group/nhusers?hl=en. >> >> > > > -- > Fabio Maulo > > -- Fabio Maulo -- You received this message because you are subscribed to the Google Groups "nhusers" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/nhusers?hl=en.
