[英]Flatten/Unflatten data from Entities to Models with AutoMapper
我想使用自動映射器展平/展平某些類,但是不確定是否可行。 我有一個ListDefo和ValueDefo,它們是如何定義列表和值的。 然后,用戶可以將它們添加到數據對象中。 我不擔心針對DataValue存儲ValueDefo Id,因為我只需要字符串值。 這是課程
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; }
}
當前,如果我使用自動映射器,則將具有以下模型,這些模型將獲得具有Values屬性的Data對象,並且每個DataValue均具有Id,ListDefoId和Value。
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可以做到嗎? 我也想再做一次
如果我更改實體以像模型一樣存儲數據,我可以輕松地做到這一點,但是擁有僅將數據記錄和值記錄鏈接起來的列表記錄將毫無意義。
您可以使用自定義映射/解析器通過Automapper來扁平化/不扁平化類,但是類的層次結構越多,解析器就越復雜。
您可以保持模型(DTO)的層次結構相同,但是刪除您認為不應設置客戶端的所有屬性,現在,當您想從DTO映射回原始實體時,可以忽略這些屬性並映射只是模型(DTO)具有的屬性。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.