假设我有一个像这样的普通外键列:
[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检索。选择并将其映射到代码中?
答案 0 :(得分:1)
您可以通过选择对象来完成所需的效果。 EF只会返回您要指定的内容。
var results = myContext.Things
.Select(x => new ThingViewModel()
{
StatusName = x.ThingStatus.Name
})
.ToList();