Как контролировать имя сервера в EF CF? - PullRequest
0 голосов
/ 07 марта 2012

Я создал инициализатор DBContext:

Public Class DropCreateInitializer(Of T As DbContext)
    Inherits DropCreateDatabaseIfModelChanges(Of T)
    Protected Overrides Sub Seed(context As T)
        context.Database.ExecuteSqlCommand("CREATE INDEX IX_EXPLAN ON DBO.EXPLANS (PROGNAME, BIND_TIME, ACCESSNAME)")
    End Sub
End Class

Я не понимаю, как управлять сервером SQL, в котором новый контекст создает базу данных.Он создается на локальном хосте / SQLEXPRESS.

Ответы [ 2 ]

0 голосов
/ 07 марта 2012

Класс DbContext дополнительно принимает строку подключения в качестве параметра конструктора, что означает, что вы можете программно построить строку подключения, используя класс System.Data.SqlClient.SqlConnectionStringBuilder .

Вот пример, в C # (я знаю, что ваш пример находится на vb.net, но перевод должен быть достаточно простым, и это должно иллюстрировать подход):

public class MyContext : DbContext
{
    public MyContext(string serverName, string databaseName)
        : base(GetConnectionString(serverName, databaseName))
    {

    }

    private static string GetConnectionString(string serverName, string databaseName)
    {
        var connectionBuilder = new SqlConnectionStringBuilder
        {
            DataSource = serverName,
            InitialCatalog = databaseName,
            IntegratedSecurity = true
        };

        var connectionString = connectionBuilder.ToString();
        return connectionString;
    }
}
0 голосов
/ 07 марта 2012

Вы управляете им в строке подключения, передаваемой в ваш контекст или определяемой в вашем файле конфигурации. Если вы не используете какой-либо EF, вы будете использовать по умолчанию тот, который использует локальный SQL Express.

...