2014-11-20 3 views
0

나는 내 코드를 작성하는 방식을 개선하려고 노력하고 있는데, 이것은 내가 최근에 겪었던 문제 중 하나이며, 이는 내 헤데ache를 상당히 낳았다.특정 방법을 사용하여 수업을 만드는 방법은 무엇입니까?

나는 ORM으로 NHibernate를 사용하고 있습니다. 내 저장소에서

나는 (. 즉 NHibernateHelperScheduler가) 세션을 열 정적 클래스를 사용하고 있습니다 :

public class PlannedShiftsRepository : Repository<PlannedShiftsEvent> 
{ 
    ///<summary> 
    ///Get all records for provided machine_id 
    ///</summary> 
    public IList<PlannedShiftsEvent> SelectForMachine(string machine_id) 
    { 
     using (ISession session = NHibernateHelperScheduler.OpenSession()) 
     { 
      var myList = session.Query<PlannedShiftsEvent>().Where(c => c.machine_id == machine_id).ToList(); 

      return myList; 
     } 
    } 
    } 

것은 좀 다르다 다른 데이터베이스에 대해 서로 다른 구성으로 하나 개 이상의 클래스 NHibernateHelper을 가지고있다 구성 측면.

public class NHibernateHelperScheduler 
{ 

    private static ISessionFactory _sessionFactory; 

    private static ISessionFactory SessionFactory 
    { 
     get 
     { 
      if (_sessionFactory == null) 
      { 

       var NHibernateConfig = new Configuration(); 
       NHibernateConfig.Configure(HttpContext.Current.Server.MapPath(
       @"~\Models\NHibernate\hibernate.cfg.xml"), "Scheduler"); 
       NHibernateConfig.AddDirectory(new System.IO.DirectoryInfo(HttpContext.Current.Server.MapPath(
       @"~\Models\NHibernate\Mapping\Scheduler"))); 
       _sessionFactory = NHibernateConfig.BuildSessionFactory(); 
      } 
      return _sessionFactory; 
     } 
    } 

    public static ISession OpenSession() 
    { 
     return SessionFactory.OpenSession(); 
    } 
} 

저장소가 다른 구성 파일을 사용할 수 있고 아무 문제없이 잘 작동하므로 몇 가지 문제가 발생합니다. 다른 구성의 경우 repo 결과는 항상 0입니다. 오류는 발생하지 않습니다.

이제 내 질문은 :

가 어떻게 ONY 특정 클래스를 사용할 수있는 저장소를 만들 수 있습니다.

예를 들어 obj 유형 PlannedShiftsEvent의 경우 정적 클래스 NHibernateHelperScheduler의 메소드 만 사용하십시오. 인터페이스를 통한 계약은 여기에서 사용해야합니까?

건배!

답변

0

질문을 올바르게 이해하면이 문제는 디자인 문제와 유사합니다. Bridge 및 Visitor 디자인 패턴과 같은 일부 GOF 디자인 패턴을 공부하는 것이 좋습니다. Factory 패턴의 구현을 이미 잘 사용하고 있으므로 다른 패턴을 조사해야합니다.

+0

예 이것은 디자인 질문입니다. 내가 제공 한 예를 살펴 보겠습니다. –

관련 문제