0

我创建了一个 DBContext Initializer:

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 上创建。

4

2 回答 2

0

您可以在传递给您的上下文或在您的配置文件中定义的连接字符串中控制它。如果您不使用任何 EF,将使用使用本地 SQL Express 的默认值。

于 2012-03-07T09:53:06.957 回答
0

该类可以选择将连接字符串作为构造函数参数,这意味着您可以使用System.Data.SqlClient.SqlConnectionStringBuilderDbContext以编程方式构建连接字符串 。

这是一个 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;
    }
}
于 2012-03-07T10:41:37.887 回答