Я пытаюсь написать код, который позволяет мне переключаться между SQLCE (локально на моей машине dev) и полным SQL (на AppHarbor). С SQL CE строка подключения обрабатывается для меня, но я должен сам ее создать для SQL. Мой код до сих пор ниже, однако он дает эту ошибку:
Ключевое слово не поддерживается: 'metadata'
Я смотрю онлайн в течение нескольких часов, но все решения связаны с использованием класса ContextBuilder, который я не могу найти (я установил 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");
}
}