Overriding the default mapper

July 3, 2018 ยท View on GitHub

By default SolrNet maps Solr fields using attributes. However you might want to use another mapper. Replacing the default mapper depends on how you set up the library:

Built-in container

If you're using the default built-in container, you can replace it like this before calling Startup.Init():

var mapper = new MappingManager();

/* Here come your mappings */

Startup.Container.RemoveAll<IReadOnlyMappingManager>();
Startup.Container.Register<IReadOnlyMappingManager>(c => mapper);

Startup.Init<Document>("http://localhost:8983/solr/document");

Windsor facility

If you're using the Windsor facility, you can override the mapper like this:

var mapper = new MappingManager();
/* Here come your mappings */
var solrFacility = new SolrNetFacility("http://localhost:8983/solr") {Mapper = mapper};
var container = new WindsorContainer();
container.AddFacility("solr", solrFacility);

Ninject module

var mapper = new MappingManager();
/* Here come your mappings */
var c = new StandardKernel();
c.Load(new SolrNetModule("http://localhost:8983/solr") {Mapper = mapper});