我创建了一个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服务器。它是在localhost/SQLEXPRESS上创建的。
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;
}
}
您可以在传递到上下文或在配置文件中定义的连接字符串中控制它。如果您不使用任何EF,则将使用默认的EF,该EF使用本地SQL Express。