我正在推广一个从 sql 和其他数据源获取数据并存储在 mongo db 中的项目。
我有映射到文档的类,例如:
public class Event
{
public virtual int Id { get; set; }
public virtual int Name { get; set; }
public virtual int Description { get; set; }
public virtual IEnumerable<string> Attendees { get; set; }
}
注意 - 标记为虚拟的属性,因为这些类也用于 nhibernate 映射(在某些情况下)
然后,我们有一个单独的用户类/集合:
public class User
{
public virtual int Id { get; set; }
public virtual int FirstName { get; set; }
public virtual int LastName { get; set; }
}
例如,在我的应用程序中,我有一个 EventController,它返回一个事件列表。我还希望“真正的”水合用户回来参加我的活动。
所以,目前,我在不同的项目/命名空间中有上述 2 个类 - 事件和用户。在这种情况下,它们位于 MyApp.DTOs 中
然后我有另一个名为 MyApp.Model 的命名空间
几乎重复的类
public class Event
{
public virtual int Id { get; set; }
public virtual int Name { get; set; }
public virtual int Description { get; set; }
public virtual IEnumerable<User> Attendees { get; set; }
}
public class User
{
public virtual int Id { get; set; }
public virtual int FirstName { get; set; }
public virtual int LastName { get; set; }
}
然后,为了让我的控制器保持精简,我有一个返回 Model.Event 的事件服务,并在其中封装了存储库/数据库逻辑:
获取事件文档 (DTOs.Event) 获取用户文档 (DTOs.User) 使用 automapper 创建 Model.User
我只是想知道是否有更好的方法,因为这会导致大量重复代码!