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 回答