我正在编写一个在后端使用 WebAPI 和实体框架的 PhoneGap/Web/JS 移动应用程序。
我有一个名为 Thing 的类,它引用 User 表 4 次(ChangedByUserId、CreatedByUserId 等。User 表非常大(30 个与用户相关的字段)
我想在每次调用中传递尽可能少的数据,但我需要每个 UserID 外键的用户名。(这是我需要的用户记录中的唯一信息)。
当我在 EF 中使用对象图时,它会为每个外键返回完整的用户记录,因此单个 Thing 对象会变得非常臃肿。我不想多次调用来获取 Thing POCO 对象,然后通过 UserID 获取用户名。
我真正想做的是一种扁平化的 DTO 对象,它只是下面的 Thing 类,但每个用户名都有一个字符串,例如 CreatedByUserName、ChangedByUserName 等。然后我会将此 DTO 作为我的水合 POCO 对象返回,数据将变小。
所以我的问题是:我如何使用实体框架来做到这一点?(限制相关记录的返回数据?)
public partial class Thing
{
public int ThingId { get; set; }
public int FromUserId { get; set; }
public int ToUserId { get; set; }
public string ThingText { get; set; }
public int StatusId { get; set; }
public int ChangedByUserId { get; set; }
public int CreatedByUserId { get; set; }
public virtual User FromUser { get; set; }
public virtual User ToUser { get; set; }
public virtual User CreatedByUser { get; set; }
public virtual User ChangedByUser { get; set; }
}