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 호출에 매개변수로 전달할 수 있습니다.
확장 방법
또 다른 접근 방식은 조인 작업을 자동으로 수행하는 확장 방법을 사용하는 것입니다. 다음 코드는 이를 달성하는 방법을 보여줍니다.
<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>
위 내용은 웹 API에서 Entity Framework 연결 문자열을 어떻게 동적으로 변경할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!