I'm trying to do simple constructor injection with NHibernate Event
Listners, here is an example:
public class FormGeneratorUpdate : IPostUpdateEventListener
{
private readonly IHostingEnvironment _env;
public FormGeneratorUpdate(IHostingEnvironment env)
{
_env = env;
}
public void OnPostUpdate(PostUpdateEvent @event)
{
string typeName = @event.Entity.GetType().Name;
dynamic entity = @event.Entity;
string filePath =
$
"{_env.ContentRootPath}\\App_Data\\FormGenerator\\{typeName}\\{entity.Id}.json"
;
File.Delete(filePath);
string json = JsonConvert.SerializeObject(entity);
using (FileStream fs = File.Create(filePath))
{
// Add some text to file
Byte[] content = new UTF8Encoding(true).GetBytes(json);
fs.Write(content, 0, content.Length);
}
}
}
I currently set up the NHibernate bytecodeProvider to the autofac
implementation like so:
NHibernate.Cfg.Environment.BytecodeProvider =
new AutofacBytecodeProvider(_container, new
ProxyFactoryFactory(), new DefaultCollectionTypeFactory());
This seems to work just fine when building the session factory, but the
question I have is how do I register an event listener with an NHibernate
configuration without first instantiating it? Every way I can register it
requires me to first instantiate the object like so:
cfg.SetListener(ListenerType.Update, new FormGeneratorUpdate());
Since the constructor is not empty it is throwing an error... I've tried
just registering the event listeners with Autofac and not setting them on
the configuration and that doesn't seem to work either, I believe I have to
set it on the configuration as well some how.
--
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.