簡體   English   中英

使用AutoMapper將實體中的數據展平/展平

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM