Я в настоящее время здание веб-сайт, который также требует нескольких баз данных. Это основы (на данный момент). Это может быть не лучший/эффективный способ, но он выполняет эту работу, чтобы я мог продолжить работу на сайте.
Предположим, у вас есть это соединение, и все, что есть правильно, за исключением того, что имя базы данных может измениться.
<add name="MyDbContext" connectionString="Server=SomeConnection;Database=SomeDatabase;"providerName="System.Data.SqlClient" />
Вы можете создать строку подключения на лету с этим
public MyDbContext CreateDbContext(string databaseName)
{
SqlConnectionStringBuilder sqlBuilder = new SqlConnectionStringBuilder(System.Configuration.ConfigurationManager.ConnectionStrings["MyDbContext"].ConnectionString); // Gets the default connection
sqlBuilder.InitialCatalog = databaseName; // Update the database name
return new MyDbContext(sqlBuilder.ToString());
}
Кроме того, если вы не хотите, чтобы автоматически создать базу данных, если она не существует, возможно, от неправильного имени базы данных, вам нужно для установки инициализатора. Просто передайте значение инициализатора null, чтобы предотвратить автоматическое создание ef. Я установил это в конструкторе MyDbContext
public class MyDbContext : DbContext
{
/* some other constructors */
public MyDbContext(string nameOrConnectionString, bool createDb)
: base(nameOrConnectionString)
{
if(!createdDb)
{
System.Data.Entity.Database.SetInitializer<MyDbContext>(null);
}
}
}
У меня есть соединительные линии в отдельном дБ. Я думал использовать cookie с просьбой. Тем не менее, я до сих пор не знаю, как установить connectionstring в классе DatabaseFactory. –