나는 내 코드를 작성하는 방식을 개선하려고 노력하고 있는데, 이것은 내가 최근에 겪었던 문제 중 하나이며, 이는 내 헤데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의 메소드 만 사용하십시오. 인터페이스를 통한 계약은 여기에서 사용해야합니까?
건배!
예 이것은 디자인 질문입니다. 내가 제공 한 예를 살펴 보겠습니다. –