Maison > développement back-end > C++ > Comment puis-je modifier dynamiquement les chaînes de connexion Entity Framework dans une API Web ?

Comment puis-je modifier dynamiquement les chaînes de connexion Entity Framework dans une API Web ?

Susan Sarandon
Libérer: 2025-01-14 06:56:47
original
329 Les gens l'ont consulté

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

Entity Framework : connexion d'opération dynamique

Votre projet API Web permet aux utilisateurs de sélectionner une base de données différente lors de la connexion. Cela implique la mise à jour dynamique de la chaîne de connexion Entity Framework. Voici comment y parvenir :

Changer de connexion

Pour modifier la connexion au contexte de données, vous pouvez modifier la chaîne de connexion du SqlConnection sous-jacent. La classe SqlConnectionStringBuilder offre un moyen pratique de créer des chaînes de connexion.

<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>
Copier après la connexion

Persistance de la connexion

Dans les projets Web API, les connexions ne doivent pas persister pendant toute la session de l'utilisateur. Chaque requête doit transmettre sa propre chaîne de connexion au contexte de données. Cela garantit la sécurité et évite les conflits potentiels de bases de données. Vous pouvez stocker la chaîne de connexion dans la session ou la transmettre en tant que paramètre à l'appel API.

Méthodes d'extension

Une autre approche consiste à utiliser une méthode d'extension qui effectue automatiquement l'opération de jointure. Le code suivant montre comment y parvenir :

<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>
Copier après la connexion

Vous pouvez ensuite facilement modifier la connexion en utilisant cette méthode d'extension :

<code class="language-csharp">var selectedDb = new MyDbContext();
selectedDb.ChangeDatabase(initialCatalog: "new-catalog");</code>
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal