Solrnet с StructureMap - PullRequest
       14

Solrnet с StructureMap

0 голосов
/ 13 декабря 2011

У меня есть вопрос о solrnet, а более конкретно о сопоставлении полей с объектами C #.

У меня есть следующий код:

var mgr = new MappingManager();
mgr.Add(typeof(Article).GetProperty("Title"), "newsTitle");

SolrServerElement news = new SolrServerElement();
news.Id = "news";
news.DocumentType = typeof(Article).AssemblyQualifiedName;
news.Url = "http://127.0.0.1:8080/solrNews/news";

SolrServers servers = new SolrServers();
servers.Add(news);

ObjectFactory.Initialize(
    x =>
    {
        x.AddRegistry(
        new SolrNetRegistry(servers)
        );

        x.For<IReadOnlyMappingManager>().Use(mgr);
    }
);

_solr = ObjectFactory.GetInstance<ISolrOperations<Article>>();
_solr.Ping();

Он не отображается для сопоставления полей Solr со свойствами объекта в C #.Есть идеи?

Ответы [ 2 ]

2 голосов
/ 13 декабря 2011

IIRC StructureMap имеет соглашение о «последних выигрышах при регистрации», т. Е. Становится услугой по умолчанию. Поэтому, если вы зарегистрируете свой IReadOnlyMappingManager после добавления SolrNetRegistry, он должен стать значением по умолчанию.

0 голосов
/ 14 декабря 2011

Для правильной работы MappingManager необходимо сначала извлечь IReadOnlyMappingManager из ObjectFactory и , а затем настроить его на использование собственного MappingManager.

Так было бы что-то вроде этого:

var mgr = new MappingManager();
mgr.Add(typeof(Article).GetProperty("Title"), "newsTitle");

ObjectFactory.EjectAllInstancesOf<IReadOnlyMappingManager>();
ObjectFactory.Configure(x => x.For<IReadOnlyMappingManager>().Use(mgr));
...