Hello,
Not sure if this is the right place, but I seem to be having a rough time
with setting up filters using a fluent config.
Here is my configuration is setup something as follows:
var sf = Fluently.Configure()
.ExposeConfiguration(AddFilters)
.Database(MsSqlConfiguration.MsSql2012.ConnectionString(_dbConnString).ShowSql())
.Mappings(m =>
m.FluentMappings.AddFromAssembly(Assembly.GetExecutingAssembly()))
....
.BuildSessionFactory();
I did not see a way to add filters other than exposing the config and using
a method to add them it. I have a method that establishes a filter
definition as follows:
var filterDef = new NHibernate.Engine.FilterDefinition("tenantFilter",
null, new Dictionary<string, IType> {{"effectiveTenant",
NHibernateUtil.String}}, true);
So far, so good...
When I try to apply the filter in my ClassMap, I get the following:
"An item with the same key has already been added"
My ClassMap looks something like this:
...
Table("Objects");
Id(x => x.Id).Column("ObjectID").Access.LowerCaseField().GeneratedBy.Guid();
ApplyFilter("tenantFilter", ":effectiveTenant = Tenant");
Map(x => x.ExpirationDate);
...
I didn't expect this since I just really want to make my mapping aware of
the filter. Should I be configuring filters some other way?
If I leave off the ApplyFilter from my mapping the filter never kicks in
when I enable it and run a query. However, if I spin through the mappings
and call AddFilter directly on the mapping, things seem to work. Here is
an example:
...
foreach (var mapping in cfg.ClassMappings)
{
if (typeof
(IMultiTenantAware).IsAssignableFrom(mapping.MappedClass))
{
mapping.AddFilter("tenantFilter", ":effectiveTenant =
Tenant");
}
}
...
I don't like this approach because it forces a marker interface. I'd like
to add the filter on the mapping if at all possible.
Any insight is appreciated.
Thanks!
Alejandro
--
You received this message because you are subscribed to the Google Groups
"nhusers" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/nhusers.
For more options, visit https://groups.google.com/d/optout.