如何使用数据注释检索实体框架中的外键关系中的列子集

时间:2017-09-21 20:38:37

标签: c# entity-framework

假设我有一个像这样的普通外键列:

[Table("Thing")]
public class Thing
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public Guid? Id { get; set; }

    public Guid? StatusId { get; set; }

    // want to omit this potentially large object
    [ForeignKey("StatusId")]
    public ThingStatus Status { get; set; } 

    // This column isn't in the Thing table; how to best populate it from ThingStatus?
    public string StatusName { get; set; }
    ...
}


[Table("ThingStatus")]
public class ThingStatus {...}

现在让我们假设ThingStatus有很多列,比我想要的多。有没有一种灵活的方法通过模型注释只检索一些值?有没有一种方法告诉EF只检索我的属性StatusName的ThingStatus.Name?

假设没有,是否有更优雅的方式来获取这个,而不是通过ThingStatus检索。选择并将其映射到代码中?

1 个答案:

答案 0 :(得分:1)

您可以通过选择对象来完成所需的效果。 EF只会返回您要指定的内容。

var results = myContext.Things
    .Select(x => new ThingViewModel()
    {
        StatusName = x.ThingStatus.Name
    })
    .ToList();