从WebApi中排除属性OData(EF)响应在c# [英] Exclude property from WebApi OData (EF) response in c#

查看:127
本文介绍了从WebApi中排除属性OData(EF)响应在c#的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用C#中的WebApi项目(EF代码第一),我正在使用OData。
我有一个带有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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆