从WebApi中排除属性OData(EF)响应在c# [英] Exclude property from WebApi OData (EF) response in c#
问题描述
我有一个带有Id,Name,LastName,Email和Password的User模型。
在控制器中,我有这个代码:
// GET:odata / Users
[EnableQuery]
public IQueryable< User> GetUsers()
{
return db.Users;
}
如果我打电话/ odata / Users我会得到所有的数据:Id ,姓名,姓氏,电子邮件和密码。
如何从结果中排除密码,但是在控制器中可以使用Linq查询?
我对这个问题做了一个工艺和临时的解决方案(不是最好的解决方案,因为UserInfo不是一个实体类型,不支持$ select或$ expand)。
我创建了一个名为UserInfo的新模型,只需要我需要的属性(除了用户):
public class UserInfo
{
public int Id {get;组; }
public string Name {get;组; }
public string Email {get;组; }
}
然后我更改了控制器中的方法:
// GET:odata / Users
[EnableQuery]
public IQueryable< UserInfo> GetUsers()
{
列表< UserInfo> lstUserInfo = new List< UserInfo>();
foreach(db.Users中的用户usr)
{
UserInfo userInfo = new UserInfo();
userInfo.Id = usr.Id;
userInfo.Name = usr.Name;
userInfo.Email = usr.Email;
lstUserInfo.Add(userInfo);
}
return lstUserInfo.AsQueryable();
}
I'm working with a WebApi project in C# (EF code first) and I'm using OData. I have a "User" model with Id, Name, LastName, Email, and Password.
In controller for example I have this code:
// GET: odata/Users
[EnableQuery]
public IQueryable<User> GetUsers()
{
return db.Users;
}
If I call /odata/Users I'll get all the data: Id, Name, LastName, Email, and Password.
How can I exclude Password from results but keep available in controller to make Linq queries?
I made a craft and temporary solution to this problem (is not the best solution because UserInfo is not an entity type and not support $select or $expand). I created a new model called UserInfo just with the properties I need (apart of User):
public class UserInfo
{
public int Id { get; set; }
public string Name { get; set; }
public string Email { get; set; }
}
Then I changed the method in the controller:
// GET: odata/Users
[EnableQuery]
public IQueryable<UserInfo> GetUsers()
{
List<UserInfo> lstUserInfo = new List<UserInfo>();
foreach(User usr in db.Users)
{
UserInfo userInfo = new UserInfo();
userInfo.Id = usr.Id;
userInfo.Name = usr.Name;
userInfo.Email = usr.Email;
lstUserInfo.Add(userInfo);
}
return lstUserInfo.AsQueryable();
}
这篇关于从WebApi中排除属性OData(EF)响应在c#的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!