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

Reply via email to