我在我们的项目中使用.Net Core 2.2 OData。我想对实体使用默认选择查询,因为我有针对用户的敏感数据,用户可以决定是否共享。
public IQueryable<User> Get()
{
return db.Users.Where(x => x.ShowProfile).Select(x => new User
{
Id = x.Id,
Name = x.Name,
Surname = x.Surname,
Photo = x.ShowPhoto && !string.IsNullOrEmpty(x.Photo) ? x.Photo : null,
Bar = x.Bar,
RegistrationNumber = x.RegistrationNumber,
PhoneNumber = x.ShowPhoneNumber && x.PhoneNumber != "-" ? x.PhoneNumber : null,
WorkPhoneNumber = x.ShowWorkPhoneNumber && x.WorkPhoneNumber != "-" ? x.WorkPhoneNumber : null,
Email = x.ShowEmail && x.Email != "-" ? x.Email : null,
//Profiles = x.Profiles //Error When This Line Uncommented
}).AsQueryable();
}
这段代码很好用,但是如果我使用$ expand和$ filter进行扩展,那么我将无法获得结果,我需要它。
我已经尝试过使用DTO模型作为UserDto,并且效果很好,但结果不是odata格式,因此我无法使用$ count等。
正确的申请方法是什么?