将值从基类的具体实例传递到另一个基类实例

时间:2020-02-28 18:57:45

标签: c# asp.net-core entity-framework-core mapping

我目前正在努力使视图模型能够解析从数据库提取到UI的数据,反之亦然,为此,我在两个视图模型之间进行了大量手动映射。

当前,我尝试传递一些确定属性的值,但是由于每种属性类型都需要指定很多特定的参数,并且由于属性只有一种类型,因此90%的变量在所有情况下都是多余的。

因此,我创建了一个占位符基类,其中仅包含一个ID,每个属性都具有该ID, ,然后每个特定的属性类型参数都将使用此占位符作为基类。

示例:

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

}

而我的Attribute类只是一个

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

}

而我的Attribute类只是一个

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,而不是指定的条目?

0 个答案:

没有答案