Мой сценарий таков:
У меня есть пользовательский поставщик членства 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.