Ihr Web-API-Projekt ermöglicht es Benutzern, beim Anmelden eine andere Datenbank auszuwählen. Dazu gehört die dynamische Aktualisierung der Entity Framework-Verbindungszeichenfolge. So erreichen Sie dies:
Verbindung ändern
Um die Datenkontextverbindung zu ändern, können Sie die Verbindungszeichenfolge der zugrunde liegenden SqlConnection ändern. Die SqlConnectionStringBuilder-Klasse bietet eine praktische Möglichkeit zum Erstellen von Verbindungszeichenfolgen.
<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>
Verbindungspersistenz
In Web-API-Projekten sollten Verbindungen nicht über die gesamte Sitzung des Benutzers bestehen bleiben. Jede Anfrage sollte ihre eigene Verbindungszeichenfolge an den Datenkontext übergeben. Dies gewährleistet die Sicherheit und verhindert potenzielle Datenbankkonflikte. Sie können die Verbindungszeichenfolge in der Sitzung speichern oder als Parameter an den API-Aufruf übergeben.
Erweiterungsmethoden
Ein anderer Ansatz besteht darin, eine Erweiterungsmethode zu verwenden, die den Join-Vorgang automatisch ausführt. Der folgende Code zeigt, wie dies erreicht wird:
<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>
Sie können die Verbindung dann bequem mit dieser Erweiterungsmethode ändern:
<code class="language-csharp">var selectedDb = new MyDbContext(); selectedDb.ChangeDatabase(initialCatalog: "new-catalog");</code>
Das obige ist der detaillierte Inhalt vonWie kann ich Entity Framework-Verbindungszeichenfolgen in einer Web-API dynamisch ändern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!