不显示自定义实体中的OData v4集合
问题描述:
我有来自具有以下5个字段的数据库的用户实体列表。最后一个字段非常大。不显示自定义实体中的OData v4集合
public class User
{
[Key]
public int Id { get; set; }
public string UserName { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public byte[] FromImage { get; set; }
}
在我的自定义操作方法之前:GetUsersExcludingPics,我正在恢复这些用户通过简单的LINQ查询列表,并everythign被罚款
return _dbContext.Users;
但需要要求的变化是:
- 排除在某些时间返回图像
- 返回一个对象,该对象中包含Users集合并且总麻木呃
为了达到这个目的,我必须开始使用用户的viewmodel。我现在有这个对象:
public class CoordsLoadUsers
{
[Key]
public int ID { get; set; }
public ICollection<UserViewModel> Users { get; set; }
public int TotalUsers { get; set; }
}
,我不得不嘲笑他们为实体ODataConventionBuilder认出来:
ODataConventionModelBuilder builder = new ODataConventionModelBuilder();
builder.EntitySet<CoordsLoadUsers>("CoordsLoadUsers");
builder.EntitySet<UserViewModel>("UserViewModel");
,现在我装我的用户是这样的:
var users = _dbContext.Users.Select(u => new UserViewModel
{
Id = u.Id,
UserName = u.UserName,
FirstName = u.FirstName,
LastName = u.LastName
});
var matchingUsers = usersInRegion.Take(10);
coordLoadUsers.Users = matchingUsers.ToList<UserViewModel>();
coordLoadUsers.TotalUsers = usersInRegion.Count();
return coordLoadUsers;
我在coordLoadUsers.Users上设置了突破点,它似乎填充了用户,但提琴手只显示这一点。没有提到我的用户列表。我错过了什么?
答
-
您可以使用AutoExpandAttribute类的,包括导航性能
Users
的结果隐含的内容:public class CoordsLoadUsers { [AutoExpand] public ICollection<UserViewModel> Users { get; set; } }
-
为了做到这一点明确:
添加$ 展开选项到路线:? https://localhost:44300/odata/CoordsLoadUsers $扩大=用户
-
允许$扩大选项:
builder .EntitySet<CoordsLoadUsers>(nameof(CoordsLoadUsers)) .EntityType .Expand(nameof(CoordsLoadUsers.Users));