В настоящее время я работаю над созданием моделей представления, способных анализировать данные, извлеченные из базы данных, в пользовательский интерфейс и наоборот, и для этого я выполняю много ручного отображения между двумя моими моделями представления.
В настоящее время я пытаюсь передать некоторые значения, которые определяют атрибут, но, поскольку каждый тип атрибута требует указания параметра, определяющего лот c, и 90% переменных будут избыточными во всех случаях, поскольку атрибуты имеют только один тип ..
Таким образом, я создал базовый класс заполнителя, который просто содержит Id, который есть у каждого атрибута, и каждый из указанных параметров типа атрибута c будет использовать этот заполнитель в качестве базового класса ..
пример:
public class BooleanViewSpecification : AttributeTypeSpecification
{
public string TrueOptionText { get; set; }
public string FalseOptionText { get; set; }
}
public class DateTimeTypeViewSpecification : AttributeTypeSpecification
{
public DateTime EarliestDataTime { get; set; }
public DateTime LatestDataTime { get; set; }
}
и мой класс атрибутов - это просто
public class AttributeView
{
public DataType Type { get; set; }
public AttributeTypeSpecification AttributeTypeViewSpecification { get; set; }
}
И то же самое относится и к моей модели представления БД
public class BooleanSpecification : AttributeTypeSpecification
{
public string TrueOptionText { get; set; }
public string FalseOptionText { get; set; }
}
public class DateTimeTypeSpecification : AttributeTypeSpecification
{
public DateTime EarliestDataTime { get; set; }
public DateTime LatestDataTime { get; set; }
}
и мой класс атрибутов - это просто
public class Attribute
{
public DataType Type { get; set; }
public AttributeTypeSpecification AttributeTypeSpecification { get; set; }
}
. Тогда проблема заключается в сопоставлении одного класса с другим классом
public static IEnumerable<AttributeView> MapToViewModel(this IEnumerable<Attribute> attributes)
{
return attributes.Select(z => new AttributeView()
{
Type = z.Type,
AttributeTypeViewSpecification = z.AttributeTypeSpecification
});
}
Что, похоже, не работает?
Я использую Структура сущностей и миграция с использованием Code-First. То, что я получаю, это Id местоположения, а не фактические значения?
Кажется, я не понимаю, почему мне нельзя дать значения - если это происходит во время отображение имеет значение? Так почему же они не могут быть сопоставлены?
Я получаю значение
Context.Include(Attribute).ThenInclude(AttributeTypeSpecification)
Единственное, что я получаю, это фактический Id, а не указанные записи?