我想使用automapper来展平/取消某些类,但不确定这是否可行。我有一个ListDefo和ValueDefo,它们是如何定义列表和值的。然后,用户可以将它们添加到数据对象。我并不担心将ValueDefo Id存储在DataValue中,因为我只需要字符串值。这是课程
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,我将拥有以下模型,我将获得一个带有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吗?我想再做一遍
如果我改变我的实体来存储像模型这样的数据,我可以很容易地做到这一点,但是将列表记录链接到数据记录和值记录上是没有意义的
答案 0 :(得分:0)
您可以使用custom mapping/resolvers使用Automapper压缩/取消标记类,但是您的类的层次结构越多,解析器就越复杂。
您可以保持模型(DTO)的相同层次结构,但删除您认为客户端不应设置的所有属性,现在当您想要从DTO映射回原始实体时,您可以忽略这些属性并仅映射模型(DTO)具有的属性。