I'll make that, thanks James (sorry I have never read that). Regards, DM
2010/3/16 James Gregory <jagregory....@gmail.com> > I'll just leave this here: > contributing<http://wiki.fluentnhibernate.org/Contributing> > . > > On Tue, Mar 16, 2010 at 12:04 PM, Daniel Mirapalheta < > mirapalh...@gmail.com> wrote: > >> About the proposed changes to FluentMappingsContainter being totally >> superflous you are right, I hadn't realized that the model field is being >> returned in the public property PersistentModel and no, I don't need to set >> the wasused property (neither I don't see why I would need it). >> >> Actually I have told why I need that. I have data restriction >> definitions stored in the database witch I'll set as filters in the >> initialization and I don't have as classes to be passed to my entities >> mapping classes so them can't apply those filters. Sorry, "new >> TFilter().Name" was a bad copy and paste, it was suposed to be just "name" >> (the parameter). You told me that it won't hurt me to use the already >> existing methods, take a look: >> >> class DynamicFilter: FilterDefinition >> { >> public DynamicFilter() { } // FilterDefinition's constructor is >> protected, this allow me to create and set a custom filter (runtime) >> } >> class DummyFilter: FilterDefinition >> { >> public DummyFilter() { base.WithName(DummyFilter.DummyName); } >> static string DymmyName; >> } >> class FooMap: ClassMap<Foo> >> { >> public FooMap() >> { >> ... mapping stuff ... >> } >> } >> >> foreach (DbFilterDef dbf in filterDefinitions) // supposed list I got from >> my database >> { >> DynamicFilter filter = new DynamicFilter() >> filter.WithName(dbf.Name); >> ... set other filter infos ... >> cfg.Mappings(x => x.FluentMappings.PersistentModel.Add(filter); >> >> FooMap foo = new FooMap(); >> DummyFilter.DummyName = filter.Name; >> foo.ApplyFilter<DummyFilter>(); >> } >> >> This kind of ugly code hurts me and I believe that should hurt every >> programmer who reads it... well, this is just a scratch I wrote to explain >> the kind of workaround I have to do so I can setup those filters, yes it may >> not compile (I just wrote it here in this e-mail body), yes it seems silly, >> but in the whole context it has a reason to exists (user defined data >> restrictions witch I set as filters in the initialization). >> >> Regards, >> DM >> >> 2010/3/15 snicker <ngordon...@gmail.com> >> >> Correct. What I meant to say was "Why do you need this?" >>> >>> You mention above that you Apply it just by the name. Why? The >>> FilterDefinition classes are hardly more than a few properties and >>> methods for generating some mapping information. It's not going to >>> hurt you particularly badly if you just use the methods already >>> existing. The code you provided wouldn't compile anyway, I believe in >>> your second method you meant "new FilterPart(name, condition);" >>> TFilter is not defined. >>> >>> Your proposed changes to FluentMappingsContainer are TOTALLY >>> superfluous. You've added additional overloads for the Add method >>> taking instances rather than types. Instead of >>> FluentMappingsContainer.Add(), you can call the PersistenceModel >>> directly for this purpose: >>> FluentMappingsContainerInstance.PersistenceModel.Add(IFilterDefinition >>> or IMappingProvider). If you need to set the WasUsed property on the >>> mappings container, either pass in an dummy empty mapping class or use >>> reflection to modify it. Here's an extension method I use: >>> >>> public static void BecomeUsed(this FluentMappingsContainer m) >>> { >>> PropertyInfo pi = m.GetType().GetProperty("WasUsed", >>> BindingFlags.NonPublic | BindingFlags.Instance); >>> if (pi != null) >>> pi.SetValue(m, true, null); >>> } >>> >>> >>> >>> On Mar 15, 10:00 am, Daniel Mirapalheta <mirapalh...@gmail.com> wrote: >>> > I just checked both classes (in the following links) and nothing of >>> that >>> > have been added. >>> > >>> > >>> http://github.com/jagregory/fluent-nhibernate/blob/master/src/FluentN...http://github.com/jagregory/fluent-nhibernate/blob/master/src/FluentN. >>> .. >>> > >>> > Regards, >>> > DM >>> > >>> > 2010/3/15 snicker <ngordon...@gmail.com> >>> > >>> > >>> > >>> > > I'm quite confused. Your suggestions exist in the latest revisions of >>> > > the repository. If you check out the repo and build from source >>> you'll >>> > > have exactly what you wish for. >>> > >>> > > On Mar 14, 5:27 pm, "Mira.D" <mirapalh...@gmail.com> wrote: >>> > > > Hi, >>> > >>> > > > Just like I told in another post ( >>> http://groups.google.com/group/ >>> > > > fluent-nhibernate/t/9eb53f6447e9771a) I use to set some dynamic >>> > > > filters on my entities. Actually I have to do a very ugly >>> workaround >>> > > > so I can acomplish that, for the definitions I have to emit code to >>> > > > make the FilterDefinitions inherited classes and for the mapping >>> > > > classes I have to set a static property with the filters witch it >>> has >>> > > > to Apply (when just it needs is the filter name). I think it should >>> be >>> > > > very better if you could add two more overloads in the >>> > > > ClassMap<T>.ApplyFilter method, those should be: >>> > >>> > > > public ClassMap<T> ApplyFilter(string name) >>> > > > { >>> > > > return this.ApplyFilter(name, null); >>> > > > } >>> > > > public ClassMap<T> ApplyFilter(string name, string >>> condition) >>> > > > { >>> > > > var part = new FilterPart(new TFilter().Name, >>> condition); >>> > > > filters.Add(part); >>> > > > return this; >>> > > > } >>> > >>> > > > And the current one could be changed to: >>> > >>> > > > public ClassMap<T> ApplyFilter<TFilter>(string condition) >>> > > > where TFilter : FilterDefinition, new() >>> > > > { >>> > > > return this.ApplyFilter(new TFilter().Name, condition); >>> > > > } >>> > >>> > > > That should solve part of my problem, second I would have the >>> > > > FluentMappingsContainer.Add restricting me to add just types and >>> > > > forcing me to emit code for the filter definitions as, also, set >>> > > > static properties of my entities mapping classes so they know witch >>> > > > filters should they apply when I could just instantiated then, set >>> the >>> > > > filters on then an pass this instance to the >>> > > > FluentMappingsContainer.Add. >>> > >>> > > > Would be something like: >>> > >>> > > > public class FluentMappingsContainer >>> > > > { >>> > > > private readonly IList<IMappingProvider> mappings = new >>> > > > List<IMappingProvider>(); >>> > > > private readonly IList<IFilterDefinition> filters = new >>> > > > List<IFilterDefinition>(); >>> > > > ... >>> > > > public FluentMappingsContainer Add(IMappingProvider >>> mapping) >>> > > > { >>> > > > mappings.Add(mapping); >>> > > > WasUsed = true; >>> > > > return this; >>> > > > } >>> > > > public FluentMappingsContainer Add(IFilterDefinition >>> filter) >>> > > > { >>> > > > filters.Add(filters); >>> > > > WasUsed = true; >>> > > > return this; >>> > > > } >>> > > > internal void Apply(Configuration cfg) >>> > > > { >>> > > > foreach (var mapping in mappings) >>> > > > { >>> > > > model.Add(mapping); >>> > > > } >>> > >>> > > > foreach (var filter in filters) >>> > > > { >>> > > > model.Add(filter); >>> > > > } >>> > >>> > > > foreach (var assembly in assemblies) >>> > > > { >>> > > > model.AddMappingsFromAssembly(assembly); >>> > > > } >>> > >>> > > > foreach (var type in types) >>> > > > { >>> > > > model.Add(type); >>> > > > } >>> > >>> > > > if (!string.IsNullOrEmpty(exportPath)) >>> > > > model.WriteMappingsTo(exportPath); >>> > >>> > > > model.Configure(cfg); >>> > > > } >>> > >>> > > > I have posted this last year ( >>> http://groups.google.com/group/fluent- >>> > > > nhibernate/browse_thread/thread/fdc23fd8197d9bbc/ >>> > > > 743077793216c027#743077793216c027) but got nothing, to my happiness >>> I >>> > > > haven't to change fluentnh code that time as in that case was for >>> > > > dicriminating classes witch have it's behavior changed to use >>> > > > SubclassMap<T>. I'm not posting a real case because the code is >>> long >>> > > > and uggly and I don't see that those overloads should be a major >>> > > > change in the FluentNHibernate structure (enlighten me if I'm >>> wrong), >>> > > > all those code have been tested here and worked fine I just don't >>> use >>> > > > them because if I make a change on FluentNHibernate I'll have to >>> peek >>> > > > it on every new version I download, too messy, error prone, >>> > > > whatever... >>> > >>> > > > Best Regards, >>> > > > DM >>> > >>> > > -- >>> > > You received this message because you are subscribed to the Google >>> Groups >>> > > "Fluent NHibernate" group. >>> > > To post to this group, send email to >>> fluent-nhibern...@googlegroups.com. >>> > > To unsubscribe from this group, send email to >>> > > fluent-nhibernate+unsubscr...@googlegroups.com<fluent-nhibernate%2bunsubscr...@googlegroups.com> >>> <fluent-nhibernate%2bunsubscr...@googlegroups.com<fluent-nhibernate%252bunsubscr...@googlegroups.com> >>> > >>> > > . >>> > > For more options, visit this group at >>> > >http://groups.google.com/group/fluent-nhibernate?hl=en. >>> > >>> > -- >>> > Daniel Mirapalheta >>> >>> -- >>> You received this message because you are subscribed to the Google Groups >>> "Fluent NHibernate" group. >>> To post to this group, send email to fluent-nhibern...@googlegroups.com. >>> To unsubscribe from this group, send email to >>> fluent-nhibernate+unsubscr...@googlegroups.com<fluent-nhibernate%2bunsubscr...@googlegroups.com> >>> . >>> For more options, visit this group at >>> http://groups.google.com/group/fluent-nhibernate?hl=en. >>> >>> >> >> >> -- >> Daniel Mirapalheta >> >> -- >> You received this message because you are subscribed to the Google Groups >> "Fluent NHibernate" group. >> To post to this group, send email to fluent-nhibern...@googlegroups.com. >> To unsubscribe from this group, send email to >> fluent-nhibernate+unsubscr...@googlegroups.com<fluent-nhibernate%2bunsubscr...@googlegroups.com> >> . >> For more options, visit this group at >> http://groups.google.com/group/fluent-nhibernate?hl=en. >> > > -- > You received this message because you are subscribed to the Google Groups > "Fluent NHibernate" group. > To post to this group, send email to fluent-nhibern...@googlegroups.com. > To unsubscribe from this group, send email to > fluent-nhibernate+unsubscr...@googlegroups.com<fluent-nhibernate%2bunsubscr...@googlegroups.com> > . > For more options, visit this group at > http://groups.google.com/group/fluent-nhibernate?hl=en. > -- Daniel Mirapalheta -- You received this message because you are subscribed to the Google Groups "Fluent NHibernate" group. To post to this group, send email to fluent-nhibern...@googlegroups.com. To unsubscribe from this group, send email to fluent-nhibernate+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/fluent-nhibernate?hl=en.