如何为嵌套域对象设计DTO类?

时间:2014-03-14 14:24:34

标签: automapper dto

我是使用DTO的新手。

我有两个域类:

  1. 分类
  2. 产品
  3. 如下

    public class Category
    {
        // Properties
        public int Id { get; set; }
        public string Name { get; set; }
    
        // Navigation properties
        public virtual Category ParentCategory { get; set; }
    
        // Foreign key
        public int? ParentCategoryId { get; set; }
    
        // Collections
        public virtual ICollection<Product> Products { get; set; }
        public virtual ICollection<Category> Subcategories { get; set; }
    }
    
    public class Product
    {
        // Properties
        public int Id { get; set; }
        public string Name { get; set; }
    
        // Navigation property
        public virtual Category Category { get; set; }
    
        // Foreign key
        public int CategoryId { get; set; }
    }
    

    我想使用Automapper。

    我不确定如何为上面的聚合(图表)设计DTO。

    • CategoryDTO应该有ProductDTO类型的集合还是Product类型的集合?
    • ProductDTO应该CategoryDTO作为导航属性还是Category,还是只有Category的ID?

    有人可以建议DTO的代码吗? 该结构应该如何展平(如果应该)并映射到域类?

    非常感谢提前。

1 个答案:

答案 0 :(得分:1)

我将DTO设计为仅用于MVC的特定控制器操作的数据。通常这意味着如果我有一个CategoryController,那么我有一个CategoryIndexModel,CategoryDe​​tailsModel,CategoryEditModel等等。只包括你想要的信息在该屏幕上。我尽可能地压扁,除非我有部分或收藏品,否则我不会创建儿童DTO。