2012-08-02 2 views
2

우리는 멀티 테넌트 데이터베이스, 즉 여러 클라이언트가 사용하는 공통 데이터베이스를 가지고 있으므로 각 테이블에 세입자를 나타내는 "ClientID"열이 있습니다. 우리는 ORM을 위해 Fluent NHibernate를 사용하고 멀티 테넌시 (multi-tenancy)를 다루기위한 최선의 방법을 찾고 있습니다. 각 매핑 클래스는 ClientID를 매핑해야하지만 값은 사용자 계정 개체에서 가져옵니다.Fluent NHibernate를 사용하여 일반적인 열 매핑

Fluent NHibernate를 사용하여 이것을 구현할 수있는 좋은 방법이 있습니까? 그렇다면 예제를 제공해 줄 수 있습니까?

답변

1

귀하의 질문이 무엇인지 모르겠지만 ClientId에 매핑 할 각 클래스가 필요한 경우 여기에 한 가지 예가 나와 있습니다.

기본적으로 각 클래스에는 ClientAd 속성이있는 사용자 계정 정보를 저장하려고하는 클래스 나 UserAccount 속성이 있습니다. 그런 다음 Fluent NHibernate 매핑에서 References() 메서드를 사용하여 클래스를 함께 매핑 할 수 있습니다. 아래의 예를 참조 : 빌 테이블에 따라서

public class UserAccount 
{ 
    public virtual int Id { get; set; } 

    public virtual string Name { get; set; } 

    public virtual IList<Bill> Bills { get; set; } 
} 

public class Bill 
{ 
    public virtual int BillId { get; set; } 

    public virtual UserAccount User { get; set; } 
} 

public class UserAccount : ClassMap<UserAccount> 
{ 
    public UserAccount() 
    { 
     Id(x => x.Id).Column("ClientId"); 

     Map(x => x.Name); 

     HasMany(x => x.Bills); 
    } 
} 

public class BillMap : ClassMap<Bill> 
{ 
    public BillMap() 
    { 
     Id(x => x.Id).Column("BillId"); 
     References(x => x.User).Column("ClientId"); 
    } 
} 

을, 당신은 데이터베이스 측면에서 정말 또한 클라이언트 ID를 지명 될 것 UserAccount 테이블의 기본 키 열을 참조하는 외래 키 인 된 ClientID 열을 가질 것이다.

ClientId 열이 모두있는 테이블을 실제로 만들려면 엔티티가 상속하는 기본 클래스에이 테이블을 추상화하는 옵션이 있어야합니다.이 기본 클래스는 이미 UserAccount 그것의 재산. Fluent NHibernate 매핑 파일에 대해서도 동일한 기본 클래스 방식을 사용할 수 있습니다.

관련 문제