Passing values from concretized instance of an base class to another base class instance

Viewed 67

I am currently working on making viewmodels capable of parsing data extracted from database to the UI and vice versa, and to do so I do a lot of manual mapping between my two viewmodels.

Currently I try to pass some values that determines an attribute, but since each attributetype requires specifying a lot specific parameter, and 90% of the variables will be redundant in all cases since attributes only have one type..

Thus i have create a placeholder base class, which just contains an Id, that each atttribute have, and each of the specific attribute type parameter will then use this placeholder as base class..

example:

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; }

}

and my Attribute class is just an

public class AttributeView
{
    public DataType Type { get; set; }
    public AttributeTypeSpecification AttributeTypeViewSpecification { get; set; }
}

And the same Goes for my DB view model

 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; }

}

and my Attribute class is just an

public class Attribute
{
    public DataType Type { get; set; }
    public AttributeTypeSpecification AttributeTypeSpecification { get; set; }
}

Problem is then mapping from one class to another class

    public static IEnumerable<AttributeView> MapToViewModel(this IEnumerable<Attribute> attributes)
    {
        return attributes.Select(z => new AttributeView()
        {
             Type = z.Type, 
             AttributeTypeViewSpecification = z.AttributeTypeSpecification 
        });
    }

Which does not seem to work?

I use entity framework and migrate using Code-First what I receive is the Id of the location, and not the actual values?

I cant seem to understand why I cant be given the values - if it during the mapping does have the value? So why cant they be mapped over?

I retrieve the value

Context.Include(Attribute).ThenInclude(AttributeTypeSpecification)

The only thing I receive is the actual Id rather than the specified entries?

0 Answers
Related