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