Heim > Backend-Entwicklung > C++ > Wie kann ich Entity Framework-Verbindungszeichenfolgen in einer Web-API dynamisch ändern?

Wie kann ich Entity Framework-Verbindungszeichenfolgen in einer Web-API dynamisch ändern?

Susan Sarandon
Freigeben: 2025-01-14 06:56:47
Original
329 Leute haben es durchsucht

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

Entity Framework: Dynamic Operation Connection

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage