我目前正在努力使视图模型能够解析从数据库提取到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,而不是指定的条目?