0

Web アプリケーションで使用するオブジェクト モデルを設計しています。

モデルにはユーザーが含まれています。各ユーザーにはセッションがあります。各セッションには、そのセッションのレコードとイベントが含まれています。私がする必要があるのは、データを永続化することです (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; }
    }
4

1 に答える 1

1

リポジトリパターンを読むことをお勧めします。これにより、データ アクセスの具体的な実装を前もって考慮する必要なく、コードを記述できます。

上記で定義したインターフェイスを使用してデータ ストアからデータを取得するためのコントラクトを定義するリポジトリ インターフェイスと共に、これらのインターフェイスを独自のアセンブリに構築します。

アプリケーションは、データ アクセスに純粋にインターフェイス定義を使用し、Unity などを使用してリポジトリとデータ オブジェクトの具体的な実装を注入できます。

また、これは、たとえばビジネス オブジェクトをテストするためのテスト リポジトリを挿入できるため、コードの単体テストにも役立ちます。

例については、こちらを参照してください。

于 2013-05-30T08:52:15.833 に答える