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>
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>
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>
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!