2014-12-06 18 views
1

我想使用automapper展平/展開某些類,但不確定這是否可行。我有一個ListDefo和ValueDefo,這是如何定義列表和值。然後用戶可以將它們添加到數據對象。我並不擔心將ValueDefo ID存儲在DataValue中,因爲我只需要字符串值。下面是類使用AutoMapper將實體到模型的展平/未展開數據

public class ListDefo { 
    public long Id { get; set; } 
    public virtual ICollection<ValueDefo> Values { get; set; } 
} 

public class ValueDefo { 
    public long Id { get; set; } 
    public string Value { get; set; } 
} 

public class Data { 
    public long Id { get; set; } 
    public ICollection<DataValue> Values { get; set; } 
} 

public class DataValue { 
    public long Id { get; set; } 
    public virtual ListDefo ListDefo { get; set; } 
    public string Value { get; set; } 
} 

目前如果我使用automapper,我將有以下型號,我得到一個數值屬性的數據對象,並與每個DataValue有一個ID,ListDefoId和價值。

public class DataModel { 
    public long Id { get; set; } 
    public ICollection<DataValueModel> Values { get; set; } 
} 

public class DataValueModel { 
    public long Id { get; set; } 
    public long ListId { get; set; } 
    public string Value{ get; set; } 
} 

這是好的我想,但我認爲這將是清潔的,相反,如果一個數據對象有一個列表的列表,然後每個列表只具有價值。所以它看起來像這樣

public class DataModel { 
    public long Id { get; set; } 
    public ICollection<DataListModel> Lists { get; set; } 
} 

public class DataListModel { 
    public long Id { get; set; } 
    public string Name { get; set; } 
    public ICollection<DataValueModel> Values { get; set; } 
} 

public class DataValueModel { 
    public long Id { get; set; } 
    public string Value{ get; set; } 
} 

這是否可以使用automapper?我想再次做它

我可以很容易地做到這一點,如果我改變我的實體來存儲像模型這樣的數據,但是將列表記錄鏈接到數據記錄和值記錄

回答

0

您可以使用custom mapping/resolvers來使用Automapper對類進行展平/展開,但是類的層次結構越多,解析器就會越複雜。

你可以保留你的模型(DTO的)的同一層次,但刪除您認爲客戶不應該設置,現在當你要映射回從DTO原始實體的所有屬性,你可以忽略這些屬性並只映射您的模型(DTO)具有的屬性。