ホームページ > バックエンド開発 > C++ > Web API で Entity Framework 接続文字列を動的に変更するにはどうすればよいですか?

Web API で Entity Framework 接続文字列を動的に変更するにはどうすればよいですか?

Susan Sarandon
リリース: 2025-01-14 06:56:47
オリジナル
330 人が閲覧しました

How Can I Dynamically Change Entity Framework Connection Strings in a Web API?

Entity Framework: 動的操作接続

Web API プロジェクトでは、ユーザーがログイン時に別のデータベースを選択できるようにしています。これには、Entity Framework 接続文字列を動的に更新することが含まれます。これを実現する方法は次のとおりです:

接続を変更

データ コンテキスト接続を変更するには、基になる SqlConnection の接続文字列を変更します。 SqlConnectionStringBuilder クラスは、接続文字列を構築する便利な方法を提供します。

<code class="language-csharp">public void Connect(Database database)
{
    // 构建 SQL 连接字符串
    SqlConnectionStringBuilder sqlString = new SqlConnectionStringBuilder()
    {
        DataSource = database.Server,
        InitialCatalog = database.Catalog,
        UserID = database.Username,
        Password = database.Password,
    };

    // 构建 Entity Framework 连接字符串
    EntityConnectionStringBuilder entityString = new EntityConnectionStringBuilder()
    {
        Provider = database.Provider,
        Metadata = Settings.Default.Metadata,
        ProviderConnectionString = sqlString.ToString()
    };

    // 更新数据上下文的连接
    using (var context = new MyDbContext(entityString.ConnectionString))
    {
        // 执行数据库操作
    }
}</code>
ログイン後にコピー

接続の永続性

Web API プロジェクトでは、ユーザーのセッション全体にわたって接続が維持されるべきではありません。各リクエストは、独自の接続文字列をデータ コンテキストに渡す必要があります。これによりセキュリティが確保され、潜在的なデータベース競合が防止されます。接続文字列をセッションに保存することも、パラメータとして API 呼び出しに渡すこともできます。

拡張メソッド

もう 1 つのアプローチは、結合操作を自動的に実行する拡張メソッドを使用することです。次のコードは、これを実現する方法を示しています。

<code class="language-csharp">public static class ConnectionTools
{
    public static void ChangeDatabase(this DbContext source, string initialCatalog, string dataSource, ...)
    {
        try
        {
            var sqlCnxStringBuilder = new SqlConnectionStringBuilder(source.Database.Connection.ConnectionString);
            if (!string.IsNullOrEmpty(initialCatalog)) sqlCnxStringBuilder.InitialCatalog = initialCatalog; // 更新连接字符串参数
            source.Database.Connection.ConnectionString = sqlCnxStringBuilder.ConnectionString;
        }
        catch (Exception ex) { /* 记录或处理异常 */ }
    }
}</code>
ログイン後にコピー

その後、この拡張メソッドを使用して接続を簡単に変更できます:

<code class="language-csharp">var selectedDb = new MyDbContext();
selectedDb.ChangeDatabase(initialCatalog: "new-catalog");</code>
ログイン後にコピー

以上がWeb API で Entity Framework 接続文字列を動的に変更するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート