Передача значений из конкретизированного экземпляра базового класса в другой экземпляр базового класса - PullRequest
2 голосов
/ 28 февраля 2020

В настоящее время я работаю над созданием моделей представления, способных анализировать данные, извлеченные из базы данных, в пользовательский интерфейс и наоборот, и для этого я выполняю много ручного отображения между двумя моими моделями представления.

В настоящее время я пытаюсь передать некоторые значения, которые определяют атрибут, но, поскольку каждый тип атрибута требует указания параметра, определяющего лот 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, а не указанные записи?

...