我正在编写一些代码,以便在开发机上本地切换 SQLCE 和完整的 SQL(在 AppHarbor 上)。对于 SQL CE,连接字符串全都由系统处理,但是对于 SQL,我必须自己构建连接字符串。下面是我的代码,但是它给出了以下错误:
我已经在网上搜寻了几个小时,但所有的解决方案都涉及使用一个 "ContextBuilder" 类,而我找不到这个类(我已经通过 NuGet 包安装了 EF)。以下是当前的代码(在 WebActivator 中启动):关键字不受支持:'metadata'
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");
}
}