2017-11-17 1 views
0

다음 코드 세그먼트 생각해은 각 클라이언트가이 곳에 멀티 테넌트 (multi-tenant) 솔루션의 백엔드를 구축하는 가장 좋은 방법은C# .NET 엔티티 프레임 워크의 멀티 테넌트 (multi-tenant) 가장 좋은 방법

public class DatabaseContext : DbContext 
{ 
    public DatabaseContext(String connectionString) : base(connectionString) 
    {    
    } 
} 

public class ContextNameDatabaseContext : DatabaseContext 
{ 
    public ContextNameDatabaseContext(String connectionString) : base(connectionString) 
    { 
    } 
} 

하나는 말할 것입니다 그 사용자가 로그 아웃 할 때까지 데이터 상태를 유지합니까?

이 인스턴스에서 이러한 클래스를 사용하는 개발자는 'DatabaseContext'클래스가 'ContextNameDatabaseContext'클래스의 기본 역할을하는 클래스가 사용되는시기와 방법을 알아야하고주의해야합니다.

의견이나 제안 사항이 있으시면 언제든지 알려 주시기 바랍니다.

+0

정확히 무슨 뜻입니까? 다른 연결 문자열을 생성자에 전달 하시겠습니까? – Evk

+0

여기서 중요한 것은 'DbContext'기본 클래스에 다른 연결 문자열을 주입하는 것뿐만 아니라 사용자가 로그인 할 때 사용자가 로그 아웃 할 때까지 해당 연결을 유지 관리하는 것입니다. – Tech

+0

당신이 제공 한 코드가 이것을 어떻게 해결합니까? – Evk

답변

0

한 가지 방법은 모든 데이터베이스 연결 문자열을 데이터베이스의 매개 변수로 유지하는 것입니다. 그러나 당신은 그것이 암호화되었는지 확인해야합니다.

public class MyDatabase: DbContext 
{ 
    public MyDatabase(string connString) 
    { 
     this.Database.Connection.ConnectionString = connString; 
    } 
    public DbSet<Order> Orders{ get; set; } 
} 

당신은 또한 당신이를 주입 .NET 코어를 사용하는 경우 IOptions을 사용할 수 있습니다 : 당신이 암호를 해독하고 그에 따라 연결 문자열을 구성 후 일반 텍스트 매개 변수로 연결을 전달할 수있는 DB 계층에서 다음

종속성으로서 연결 문자열.

+0

IOptions 인터페이스에 익숙하지 않더라도 확실히 읽을 수 있습니다. – Tech

관련 문제