c#-不显示自定义实体中的OData v4集合
作者:互联网
我有来自数据库的用户实体列表,该列表具有以下5个字段.最后一个字段很大.
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; }
}
之前,在我的自定义操作方法:GetUsersExclusionPics中,我使用简单的linq查询返回了这些用户的列表,一切都很好
return _dbContext.Users;
但需要进行的更改是:
>在某些时候排除图像返回
>返回其中包含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处设置了断点,似乎填充了用户,但是fiddler仅显示了这一点.没有提及我的用户列表.我想念什么?
解决方法:
>您可以使用AutoExpandAttribute类在结果中隐式包括导航属性Users的内容:
public class CoordsLoadUsers
{
[AutoExpand]
public ICollection<UserViewModel> Users { get; set; }
}
>要明确地做到这一点:
>将$expand选项添加到路由:
https://localhost:44300/odata/CoordsLoadUsers?$expand =用户
>允许$expand选项:
builder
.EntitySet<CoordsLoadUsers>(nameof(CoordsLoadUsers))
.EntityType
.Expand(nameof(CoordsLoadUsers.Users));
标签:odata-v4,c 来源: https://codeday.me/bug/20191112/2024287.html