Как программно установить строку подключения для Entity-Framework Code-First?

Я пытаюсь написать код, который позволяет мне переключаться между SQLCE (локально на моей машине разработчика) и полным SQL (на AppHarbor). В SQL CE вся строка подключения обрабатывается за меня, но я должен сам создать ее для SQL. Мой код пока приведен ниже, однако он дает следующую ошибку:

Ключевое слово не поддерживается: 'метаданные'

Я искал в Интернете несколько часов, но все решения включают использование класса «ContextBuilder», который я могу » t find (я установил EF через пакет NuGet).

Вот текущий код (выполняется при запуске через WebActivator):

public static void Start()
{
    // Read the details from AppSettings. Locally, these will be empty.
    var databaseHost = ConfigurationManager.AppSettings["DatabaseHost"];
    var databaseName = ConfigurationManager.AppSettings["DatabaseName"];
    var databaseUsername = ConfigurationManager.AppSettings["DatabaseUsername"];
    var databasePassword = ConfigurationManager.AppSettings["DatabasePassword"];

    // Check whether we have actual SQL Server settings.
    if (!string.IsNullOrWhiteSpace(databaseHost) && !string.IsNullOrWhiteSpace(databaseName))
    {
        // Set up connection string for a real live database :-O
        var connectionString = string.Format("metadata=res://*/DB.csdl|res://*/DB.ssdl|res://*/DB.msl;"
            + "provider=System.Data.SqlClient; provider connection string='Data Source={0};"
            + "Initial Catalog={1};User ID={2}; Password={3};MultipleActiveResultSets=True'",
            databaseHost, databaseName, databaseUsername, databasePassword);

        Database.DefaultConnectionFactory = new SqlConnectionFactory(connectionString);
    }
    else
    {
        // Set a custom database initializer for setting up dev database test data.
        Database.SetInitializer<BlogDataContext>(new BlogDataIntializer());

        // Set the connection factory for SQL Compact Edition.
        Database.DefaultConnectionFactory = new SqlCeConnectionFactory("System.Data.SqlServerCe.4.0");
    }
}
39
задан Danny Tuppeny 14 May 2011 в 16:15
поделиться