2013-05-30 4 views
0

웹 응용 프로그램에서 사용할 개체 모델을 설계하고 있습니다.다양한 데이터베이스를 사용하여 구현 된 C# 인터페이스를 만드는 방법

모델에는 사용자가 포함되어 있습니다. 각 사용자마다 세션이 있습니다. 각 세션에는 해당 세션의 레코드 및 이벤트가 포함됩니다. 내가해야 할 일은 데이터를 유지하는 것입니다 (mongodb 또는 이와 유사).이 코드를 내 데이터베이스의 API로 유지하려면 어떻게해야합니까? API를 사용하는 소비자는이 코드를 저장하는 방법을 알 필요가 없습니다. 그리고 그것은 똑같이 "마법처럼"작용할 것입니다.

감사합니다.

다음은 현재 사용중인 디자인입니다.

public class User 
    { 
     public int id {get; set;} 
     public DateTime EnrollDate { get; set; } 
     public string Udid { get; set; } 
     public string Email { get; set; } 
     public string UserName { get; set; } 
     public string Password { get; set; } 
     public HashSet<Session> Sessions { get; set; } 
     public HashSet<Session> GetSessions() 
     { 
      if (Sessions == null) 
      { 
       Sessions = new HashSet<Session>(); 
      } 
      return Sessions; 
     } 
    } 

public class Session 
    { 
     public string SessionId { get; set; } 
     public DateTime Time { get; set; } 
     public JObject Parameters { get; set; } 
     private List<Event> Events { get; set; } 
     private List<Record> Records { get; set; } 
     public List<Event> GetEvents() 
     { 
      if (Events == null) 
      { 
       Events = new List<Event>(); 
      } 
      return Events; 
     } 
     public List<Record> GetRecords() 
     { 
      if (Records == null) 
      { 
       Records = new List<Record>(); 
      } 
      return Records; 
     } 
    } 
public class Record 
    { 
     public Record() 
     { 
      RecordId = Guid.NewGuid().ToString(); 
      CreatedAt = DateTime.Now; 
     } 
     public string Name { get; set; } 
     public string RecordId { get; set; } 
     public DateTime CreatedAt { get; set; } 
     public DateTime Time { get; set; } 
     public JObject Data { get; set; } 
    } 

public class Event 
    { 
     public Event() 
     { 
      EventId = Guid.NewGuid().ToString(); 
      CreatedAt = DateTime.Now; 
     } 
     public string EventId { get; set; } 
     public string Name { get; set; } 
     public DateTime Time { get; set; } 
     private DateTime CreatedAt { get; set; } 
     public JObject Parameters { get; set; } 
    } 
+0

선택할 수있는 다양한 ORM이 있습니다. 어떤 (Entity Framework, Hibernate, Dapper, ...)를 보았습니까? –

+0

엔티티는 SQL을 지향합니다. 더 일반적인 질문입니다. –

답변

1

난 당신이 저장소 패턴을 읽어 제안합니다. 이를 통해 데이터 액세스의 구체적인 구현을 고려하지 않고도 코드를 작성할 수 있습니다.

위에서 정의한 인터페이스를 사용하여 데이터 저장소에서 데이터를 가져 오기위한 계약을 정의하는 저장소 인터페이스와 함께이 인터페이스를 자체 어셈블리에 빌드합니다.

응용 프로그램은 순수하게 데이터 액세스를위한 인터페이스 정의를 사용하며 Unity 등을 사용하여 저장소 및 데이터 객체의 구체적인 구현을 주입 할 수 있습니다. 당신은 예를 들어 here를 참조 예를

에 대한

을 테스트 비즈니스 개체에 대한 테스트 저장소를 주입 할 수 있기 때문에

또한이 코드를 테스트 유닛에 도움이됩니다.