Как ссылаться на инициализированный встроенный экземпляр RavenDB в библиотеке классов? - PullRequest
1 голос
/ 15 декабря 2011

Мой сценарий таков:

У меня есть пользовательский поставщик членства RavenDB , который реализован в библиотеке классов (DLL). Этот поставщик должен иметь доступ к базе данных для хранения и получения информации о пользователях и ролях. Я хотел бы использовать одну и ту же базу данных приложения для хранения информации о членстве, чтобы избежать создания еще одной базы данных.

Я не знаю, как получить ссылку на уже инициализированную базу данных (базу данных приложения) внутри кода библиотеки классов. Я думаю, что я иду неправильный путь здесь ...:)

Некоторые коды:

bool embeddedStore = Convert.ToBoolean(config["enableEmbeddableDocumentStore"]);

if (embeddedStore)
{
    _documentStore = new EmbeddableDocumentStore()
    {
        // Here I'm using the same connection string used by the app.
        // This gives me an error when I try to open a session in the DocumentStore.
        ConnectionStringName =
            config["connectionStringName"]
    };
}
else
{
    _documentStore = new DocumentStore()
    {
        ConnectionStringName =
            config["connectionStringName"]
    };
}

Это строка подключения, представленная в Web.config:

<add name="RavenDB" connectionString="DataDir = ~\App_Data\Database" />

Как я могу использовать одну и ту же базу данных в провайдере нестандартного членства? Есть идеи?

Я думал о переносе файлов кода библиотеки классов в веб-проект. Таким образом, я мог бы легко получить ссылку на DocumentStore, но код был бы не так организован, как хотелось бы.

Я также пытался использовать 2 базы данных RavenDB: 1 для приложения и 1 для провайдера членства, но поскольку я использую RavenDB встраиваемым способом, я не смог заставить его работать.

Это ошибки, которые я получил во время моих попыток:

RavenDB Could not open transactional storage.

Temp path already used by another database instance.

1 Ответ

1 голос
/ 15 декабря 2011

Вам нужно передать экземпляр открытого хранилища документов в вашу dll. Вы можете сделать это, используя контейнер или предоставив вызов API для этого. Вы не можете иметь два экземпляра, использующих одну и ту же базу данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...