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. For more options, visit this group at http://groups.google.com/group/fluent-nhibernate?hl=en.