2010-05-12 3 views
0

나는 내 프로젝트에서 Unity DI를 구현했지만, 나는 믿는다. 간단한 질문이다.DI 세계에서 괜찮습니까?

내 DataContext에 :

public partial class AuctionDataContext : DataContext { 
    public Table<AuctionItem> AuctionItems; 

    ... 
} 

데이터베이스에 AuctionItem을 삽입하기위한 몇 가지 코드입니다. 인터페이스를 실제 유형으로 변환하는 방법에 유의하십시오. 이것은 DataContext를 사용하여 올바르게 작동하는 것입니다.

public void Insert(IAuctionItem item) { 
    _dataStore.DataContext.AuctionItems.InsertOnSubmit((AuctionItem)item); 
    _dataStore.DataContext.SubmitChanges(); 
} 

AuctionItem도 DataContext 유형도 클라이언트 코드에 노출되지 않지만 데이터베이스 계층 내에서만 액세스 할 수 있습니다. 제 질문은이게 괜찮은 건축인가요?

답변

1

아키텍처가 "ok"이지만 모든 아키텍처가 상황에 따라 다르므로 한 패턴이 한 패턴에서는 완벽하지만 다른 패턴에서는 무섭다.

영속성 메커니즘에서 리포지토리/DAO를 추상화하는 것이 현명한 방법이며, 내가 한 것을 볼 수 있습니다. 구현을 변경할 수있는 유연성을 제공하는 구현 주위의 다른 인터페이스를 제안합니다.

public interface IRepository<T>{ 
    void Insert(T item); 
} 

public class AuctionItem : IRepository<IAuctionItem> { 

    public void Insert(IAuctionItem item) { 
     _dataStore.DataContext.AuctionItems.InsertOnSubmit((AuctionItem)item); 
     _dataStore.DataContext.SubmitChanges(); 
    } 

}