Я пытаюсь войти в свое приложение с определенным арендатором, который имеет свою собственную базу данных. И я всегда получал эту ошибку: "Вторая операция началась в этом контексте до завершения предыдущей асинхронной операции. Используйте 'await', чтобы убедиться, что любые асинхронные операции завершены перед вызовом другого метода в этом контексте. Любые члены экземпляра не являются гарантированно безопасна для ниток. ". Как я могу это исправить?
Я использую AspNet Boilerplate MVC5.x с базой данных Oracle Oracle.
Я включил многопользовательский режим и попытался войти с арендатором, у которого есть собственная база данных. Я сделал некоторые изменения в платформе, и на моей текущей странице создания арендатора нет поля для заполнения строки подключения. Поэтому я создал это поле, запустив проект в режиме отладки и сгенерировав зашифрованную строку для моей строки подключения. Я проверял строку подключения раньше, и она работает отлично. Затем я присваиваю результат Tenant1 столбцу connectionString. Когда я пытаюсь войти в систему с этим арендатором, я получаю сообщение об ошибке.
Ниже приведен мой код DbContext:
public MyProjectDbContext(string nameOrConnectionString): base(GetDbConnection(nameOrConnectionString), true)
{
}
public static DbConnection GetDbConnection(string companyName)
{
System.Data.SqlClient.SqlConnectionStringBuilder builder = null;
if (companyName.ToUpper().Contains("USER ID") && companyName.ToUpper().Contains("PASSWORD"))
{
builder = new System.Data.SqlClient.SqlConnectionStringBuilder(companyName);
}
else
{
builder = new System.Data.SqlClient.SqlConnectionStringBuilder(System.Configuration.ConfigurationManager.ConnectionStrings[companyName].ConnectionString);
}
DbConnection serviceDiscoveryDbConnection = DbProviderFactories.GetFactory("Oracle.ManagedDataAccess.Client").CreateConnection();
serviceDiscoveryDbConnection.ConnectionString = GetOracleManagedConnectionString(builder.DataSource, builder.UserID, builder.Password);
return serviceDiscoveryDbConnection;
}
Я уже пробовал AspNetBoilerplate sample и изменил его на использование mysql. Однако, когда я пытаюсь создать арендатора с заполненной строкой соединения, я получаю следующую ошибку: «Несколько одновременных соединений или соединений с разными строками соединения внутри одной транзакции в настоящее время не поддерживаются». . На мой взгляд, это похожая ошибка. Итак, я думаю, что решение должно быть почти одинаковым для обеих проблем. Даже когда я вручную добавляю connectionString в базу данных mysql, я получаю ту же ошибку при попытке войти в систему.
Я хочу иметь мульти-дБ / мультитенант, где у каждого арендатора есть своя собственная база данных. Поэтому, если я вхожу в систему с помощью Tenant2 / myuser , когда я захожу на домашнюю страницу, я хочу выполнять все вызовы в базу данных корреспондентов Tenant2 .
Заранее спасибо =)