0

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 で作成されます。

4

2 に答える 2

0

このクラスはオプションで、接続文字列をコンストラクター パラメーターとして受け取ります。つまり、 System.Data.SqlClient.SqlConnectionStringBuilderクラスDbContextを使用してプログラムで接続文字列を構築できます 。

これは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 に答える
0

コンテキストに渡されるか、構成ファイルで定義された接続文字列で制御します。EF を使用しない場合、ローカル SQL Express を使用するデフォルトの EF が使用されます。

于 2012-03-07T09:53:06.957 に答える