Я хотел бы сгладить /unflatten некоторые классы, используя automapper, но не уверен, что это возможно. У меня есть ListDefo и ValueDefo, которые определяют список и значения. Затем пользователь может добавить их в объект данных. Я не беспокоюсь о хранении идентификатора ValueDefo в 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, у меня будут следующие модели, которые я получаю объект Data со свойством Values, и каждый 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? Я хотел бы снова это сделать
Я мог бы сделать это легко, если бы изменил свои сущности, чтобы хранить данные, подобные моделям, но было бы бессмысленно иметь запись списка, которая просто связывает записи данных и записи значений
Вы можете использовать пользовательские сопоставление/распознаватели для сглаживания /unflatten классов с Automapper, тем не менее, чем больше иерархии, чем ваши классы будут иметь более сложный ваш резольвер.
Вы можете сохранить одну и ту же иерархию своих моделей (DTO), но удалить все свойства, которые, по вашему мнению, не должны устанавливать клиентом, теперь, когда вы хотите вернуться к исходному объекту из DTO, вы можете игнорировать эти свойства и карту просто свойства, которые имеет ваша модель (DTO).